【发布时间】:2015-07-23 10:01:29
【问题描述】:
我有一个项目,用户可以在其中创建与其他用户的对话。对话可以belongsToMany用户,用户可以belongsToMany对话。
我现在需要获取两个特定用户参与的对话。
我尝试了使用whereIn 的解决方案组合,并尝试了以下方法:
$c = Conversation::whereHas('users', function($q)
{
$q->whereIn('user_id', array(1,3));
})
->get();
这里的问题是whereIn('user_id', [1,3]) 获取包含 EITHER 1 或 3 的记录。我需要它返回包含 BOTH 1 和 3 的记录。
对话模型
class Conversation extends Model {
public function users(){
return $this->belongsToMany('App\User');
}
}
用户模型
class User extends Model {
public function conversations(){
return $this->belongsToMany('App\Conversation');
}
}
表格
对话:
标识 |主题
conversation_user:
标识 |用户 ID |对话ID
conversation_user 表中的数据
【问题讨论】:
-
您确定用户 1 和 3 不属于您的所有对话吗?你已经尝试过的东西在我看来是正确的。
-
是的,为了清楚起见,我在表格中包含了当前数据的屏幕截图。
标签: php laravel laravel-5 eloquent has-and-belongs-to-many