私は一見愚かでクレイジーな状況です。私は、ユーザーのためのアクティビティログを持って、私のユーザモデルがそれで、この関係を持っていますLaravel dd()以外の何かをしているときに孤独な人間関係はありません
public function activityLogs()
{
return $this->hasMany(Log::class);
}
かなりまっすぐ進むと私はそれが正常に動作し、すべてのログのための単一のユーザーオブジェクトを確認してください。だから私は1つのページで、私は最後のログを記録したい、私はそれからcreated_at
の日付が必要です。ユーザーを読み込むときに実行します
$users = User::with(
[
'activityLogs' => function ($query) {
$query->orderBy('created_at', 'desc')
->limit(1);
}
]
)
これは期待どおりに最後のログを返します。実行したときに日付を取得したいとき
dd($users->first()->activityLogs()->first()->created_at->format("d/m/Y"));
期待どおりの日付の文字列が出力されます。しかし、変数に入れたり、エコーしたりするなど、何か他のことをしようとすると、activityLogs() - > first()がオブジェクトではないというエラーが表示されます。 (foreach ($users as $user)
ループ内で)私の見解でコードが
{{ $user->activityLogs()->first()->created_at }}
であり、それは単に非オブジェクトのプロパティを取得しようとする私にエラー
ErrorException(E_ERROR) を与えます(閲覧:のroot_path /resources/views/acp/partials/profiles.blade.php)(閲覧:のroot_path /resources/views/acp/partials/profiles.blade.php)
私はコレクションとhasManyオブジェクトの両方としてactivityLogs
にアクセスしようとしました。私もjson_decode
と結果のJSON文字列を変換しようとしましたが、それはまだオブジェクトではないことについて不平を言う。
なぜですか? dd
を使用しているときに値を完全にうまく取得できるのはなぜですか。他のものはです。突然JSON文字列ですか?私はこれを検索しようとしましたが、どのような言葉の組み合わせであっても、EloquentオブジェクトをJSONに変換する方法についての質問とガイドがあります。あなたは必ずユーザーにするためにチェックする必要があります
$user->activityLogs->first()->created_at
または
$user->activityLogs[0]->created_at
を使用(https://stackoverflow.com/questions/34571957/laravel-hasmany-method-not- '{{$ user-> activityLogs-> first() - > created_at}}' – rbaskam
はい、私もそれを試みました。 – Styphon
すでに 'with'でアクティビティログをロードしているので、すべてを行う必要はありません。 '$ user'のダンプを見て、そこにアクティビティログがあるかどうか調べてみてください。 – aynber