Laravel でリレーションシップにアクセスできません。この質問に関連して、2 つのテーブルがmessages
ありusers
ます。
messages
テーブルは次のようになります。
Messages: id, user_from, user_to, read, message, created_at, updated_at
users
テーブルは次のようになります。
Users: id, email, password, name, created_at, updated_at, bio, reputation, last_login_ip, last_seen, active
user_from
列と列はどちらも、メッセージを送信したユーザー (主キー) またはメッセージの送信先にuser_to
対応する int です。id
Message
私のモデルの関連部分は次のようになります。
class Message extends Eloquent {
//relationships
public function user_from() {
return $this->belongs_to('User', 'user_from');
}
public function user_to() {
return $this->belongs_to('User', 'user_to');
}
}
User
私のモデルの関連部分は次のようになります。
class User extends Eloquent {
//relationships
public function messages_from() {
return $this->has_many('Message', 'user_from');
}
public function messages_to() {
return $this->has_many('Message', 'user_to');
}
}
ビューでは、メッセージを書いたユーザーにアクセスしようとしており、次のようなコードを書いています。
{{ $message->user_from->name }}
Trying to get property of non-object
その1行でエラーがスローされます。と$message
を除く他のすべてのプロパティが定義され、完全に出力されるため、オブジェクトが定義されていることがわかります。ドキュメントを何度か読みましたが、ここで何が間違っていたのかわかりません...誰かが誰かに突き出ていますか? これは教科書の例のようですが、うまくいきません。user_from
user_to
ビューにデータを渡す方法は次のとおりです。
$messages = Message::where('user_to', '=', Auth::user()->id)->take(20)->get();