0

我在访问 Laravel 中的关系时遇到问题。与这个问题相关,我有两个表,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_toid

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这会在那一行引发错误。我知道该$message对象已定义,因为除user_from和之外的所有其他属性user_to都已定义并完美打印出来。我已经多次阅读文档,但我无法弄清楚我在这里做错了什么......有人坚持吗?这似乎是一个教科书示例,但它不起作用。

我将数据传递给视图的方式是:

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

1 回答 1

0

Message模型中使用方法名称from_user()to_user()不是user_from()user_to()(并将视图更改为对应)可以完全解决问题。没有更改其他代码。

当您指定自定义字段(我认为)时,Laravel 会通过方法名称获取数据库字段。诡异的。

于 2013-06-06T18:24:25.820 回答