如何用雄辩的关系实现以下目标?帖子可以由多个用户加书签,每个用户只能给任何给定的帖子加一次书签(如果删除书签,记录将被删除)。我想检索所有的帖子与指标是否当前登录的用户有书签他们。
SELECT p.*, NOT(ISNULL(b.PostId)) Bookmarked
FROM Post p
LEFT JOIN (
SELECT PostId FROM Bookmark WHERE UserId = {{ Auth::id() }}
) b
ON p.PostId = b.PostId
您可以使用with count()
:
$posts = Post::withCount(['bookmarks as bookmarked', function($query) {
$query->where('UserId', Auth::id());
}])->get();
这需要一个书签
关系:
用户
表的关系
我认为一个好的解决方案是创建一个数据透视表,类似这样:
Schema::create('users', function (Blueprint $table) {
// Your users table
});
Schema::create('posts', function (Blueprint $table) {
// Your posts table
});
Schema::create('post_user', function (Blueprint $table) {
$table->integer('post_id')->unsigned();
$table->integer('user_id')->unsigned();
});
比在你的Post
模型中定义一个多对多关系:
public function bookmarkUsers() {
return $this->belongsToMany('Your\User\Model');
}
而且比在您的控制器中,您可以检索用户的书签帖子:
// [other stuff]
$posts = Post::whereHas('bookmarkedUsers', function($query) {
$query->where('id', '=', Auth::id());
})->get();
我有以下三个表格: 所以基本上这种关系就像: 用户有许多项目 项目属性到客户端 我的问题是: 如何使用eloquent获得用户的所有客户端? 似乎我不能用户hasManyPass方法,因为在客户端表中没有project_id。 因此,我希望达到的目标是:
我有三种模式——博客、帖子、评论。博客有很多帖子,帖子有很多评论 当我写作时 它会给所有的博客发帖子和评论。但我将如何获得那些由管理员用户创建的博客,即评论表中的用户id。在哪里写入
我是Laravel5.2的新手,正在开发一个遗留系统,对雄辩有点困惑,希望有人能给我代码。 共有3个表格: 卡片类别卡片2类 卡片可以是许多类别的一部分,这些类别保存在cards2cat表中。 cards2cat表的结构如下 id(主键)图像(卡)类别 我想做的是在Cards模型中有一个方法,名为getCardsWithCategors,它返回Cards信息和category表中类别的名称。 ca
我正在编写php代码,对于当前的项目,我正在使用laravel框架(带有雄辩的ORM)。在这个项目中,我创建了两个表:用户和任务。我想在这些表之间创建一个“一对多”的关系。因此,一个用户可以有许多任务。在Tasks类中,我创建了方法所有者(): 但是当我以前得到用户名的时候 我得到这个异常:未定义的属性:illumb\Database\Eloquent\Relations\BelongsTo::$
我试着补充: 并用调用,但响应为空。
我刚刚开始学习LaravelV3,我试图通过创建一个博客来了解eloquent的一对多关系。我的帖子与类别有多对一的关系(每个帖子都链接到一个类别)。 我有以下表格和以下字段: 帖子:id、标题、正文、创建日期、类别id 类别:id、名称 我有以下两种型号: 我想出了如何通过传递类别id来获得所有帖子: 我只是需要帮助,找出如何获得所有的职位,并得到他们的更正类别。因此,在视图中的一天结束时,我可