これがルートです
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フィールドを使用します..)。
私の英語でごめんなさい。