Laravel 4 - 根据ID显示用户名

时间:2014-05-01 10:03:10

标签: laravel laravel-4

我有帖子和用户表。

在posts表中,我有一个posts_author,它是users表中用户的ID。

是否有一种简单的方法来显示用户的电子邮件地址,该地址位于用户表中?

干杯,

3 个答案:

答案 0 :(得分:0)

只要您设置了自己的关系,就应该只是一个简单的查询。

http://laravel.com/docs/eloquent#relationships

查看一对多的关系。 (1个用户,多个帖子) 记得同时设置关系的倒数

答案 1 :(得分:0)

如果您的模型具有正确的relationships,则应该像$post->author->email()一样简单。

您必须调整作者关系,因为Eloquent假定该键将命名为author_id。

// Post

public function author() {
    return $this->belongsTo('Author', 'posts_author');
}


// Author

public function posts() {
    return $this->hasMany('Post');
}

请记住,如果您要从多个帖子对象中检索电子邮件,请使用eager加载,否则您最终会收到n + 1个查询。

答案 2 :(得分:0)

假设您已正确配置关系,那应该非常简单。

发布模型:

class Post extends Eloquent
{

    protected $table = 'posts';

    public function author()
    {
        return $this->belongsTo('User', 'posts_author');
    }

}

然后用户模型:

class User extends Eloquent
{

    protected $table = 'users';

    public function posts()
    {
        return $this->hasMany('Post', 'posts_author');
    }

}

然后在加载帖子时,您可以执行以下操作。

$post = Post::with('author')->find($id);

这将告诉Eloquent加入users表并同时加载用户数据。现在您可以访问所有用户信息,如下所示:

$post->author->username;
$post->author->email;
$post->author->id;
// etc etc

显然这只是一个骨架,但假设你有其余的设置。