【发布时间】:2015-06-26 08:59:04
【问题描述】:
我正在尝试使用 eloquent 中的特定用户的书签中的特定标签名称执行搜索查询:
SELECT * FROM
bookmarks_tagsWHERE tag_id in (SELECT id FROMtagsWHERE name in ('new','please','work')) 和 bookmark_id in (SELECT id 来自用户 ID = 1 的书签)
我有以下具有关系的模型设置:
标签模型
class Tag extends Eloquent
{
public function bookmarks()
{
return $this
->belongsToMany('Bookmark','bookmarks_tags');
}
}
书签模型:
class Bookmark extends Eloquent {
.....
public function owner()
{
return $this->belongsTo('User','id');
}
public function tags()
{
return $this->belongsToMany('Tag','bookmarks_tags','bookmark_id','tag_id');
}
}
最后是用户模型:
class User extends Eloquent implements UserInterface, RemindableInterface {
use UserTrait, RemindableTrait;
/**
* The database table used by the model.
*
* @var string
*/
protected $table = 'users';
.....
public function bookmarks()
{
return $this->hasMany('Bookmark','userid');
}
}
这是我的数据库架构:
我知道我可以通过以下方式获取书签和标签 ID:
$bookmarkIDs = Auth::user()->bookmarks()->get('id');
$tagsID = Tag::whereIn('name', $tags)->get('id');
但我不知道如何对bookmarks_tag 执行此查询。
【问题讨论】:
标签: laravel laravel-4 orm eloquent relationship