我有帖子和用户表。
在posts表中,我有一个posts_author,它是users表中用户的ID。
是否有一种简单的方法来显示用户的电子邮件地址,该地址位于用户表中?
干杯,
答案 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
显然这只是一个骨架,但假设你有其余的设置。