0

これがルートです

Route::get('test', array('before' => 'auth', 'as' => 'asd', function()
{
$userid = '2';
$result = Messages::whereIn('from', array($userid, Auth::user()->id))
                    ->whereIn('to', array($userid, Auth::user()->id))
                    ->orderBy('sended', 'desc')
                    ->join('ucpm_users', 'ucpm_messages.from', '=', 'ucpm_users.id')->join('metadata_personas', 'ucpm_users.persona', '=', 'metadata_personas.id')
                    ->select('from','ucpm_users.username','metadata_personas.first_name','metadata_personas.last_name','message','ucpm_messages.created_at','ucpm_messages.updated_at','ucpm_messages.readed_at')
                    ->get();
    $result->each(function($message)
        {
                $message->touch();
        });
print_r($result);

}));

実行されると、次のようなエントリ オブジェクトのコレクションが出力されます。

               [attributes:protected] => Array
                    (
                        [from] => 2
                        [username] => criser
                        [first_name] => Cristian
                        [last_name] => Leal
                        [message] => asdqweasd
                        [created_at] => 2013-06-07 20:11:31
                        [updated_at] => 2013-06-07 24:31:52
                        [readed_at] => 1986-09-08 00:00:00
                    )

                [original:protected] => Array
                    (
                        [from] => 2
                        [username] => criser
                        [first_name] => Cristian
                        [last_name] => Leal
                        [message] => asdqweasd
                        [created_at] => 2013-06-07 20:11:31
                        [updated_at] => 2013-06-07 24:31:52
                        [readed_at] => 1986-09-08 00:00:00
                    )

エラー応答などはありません。また、属性と元の配列の両方で、updated_at フィールドが現在のタイムスタンプで変更されています。それは大丈夫で、私が働きたい方法ですが..彼らはDBに変更を加えません。updated_at フィールドなどに変更はありません。そして、モデルが変更される理由を理解し、その変更を示して混乱しますが、変更はコミットされません。

さらに、「$message->touch()」を変更すると、「$message->readed_at = '09-08-1986'; $message->save();」結果は同じです。作業のように感じますが、DB は変更されません。

ルート (このルートではありません。これは単なるテストです) は、現在ログインしているユーザーから別のユーザーを使用してすべてのメッセージを回復し、json 応答を出力します。私の考えは、ロード時にcreated_atの日付がupdated_atと同じ場合、メッセージは未読です。そのため、それを変更したい(またはreaded_atフィールドを使用します..)。

私の英語でごめんなさい。

4

1 に答える 1