0

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_fromuser_to

ビューにデータを渡す方法は次のとおりです。

$messages = Message::where('user_to', '=', Auth::user()->id)->take(20)->get();
4

1 に答える 1

0

Messageモデル内のメソッド名をfrom_user()andto_user()の代わりにuser_from()anduser_to()にする (およびビューを対応するように変更する) と、問題は完全に修正されます。他のコードは変更されていません。

カスタムフィールドを指定すると、Laravelはメソッド名でデータベースフィールドを取得します(私は思います)。変。

于 2013-06-06T18:24:25.820 に答える