php - 关系上雄辩的“哪里”返回错误的模型
问题描述
我的模型“雇主”上有这种方法:
public function job_offers() {
return $this->hasMany('App\JobOffer');
}
public function shared_job_offers() {
return $this->job_offers()->where(function ($query) {
$query->where('subscription', 3)->where('disable_share', false);
})->orWhere(function ($query) {
$query->where('subscription', '!=', 3)->where('manual_share', true);
});
}
我认为它可以正常工作,但它最终给我的模型甚至与我的模型无关。就像,模型的 id 是 37,它给了我所有模型的关系(比如 id 6)。
知道为什么会发生这种情况吗?
解决方案
我认为由于没有在同一个呼叫中对 where 和 orWhere 进行分组,您遇到了意外的行为。这行得通吗?
public function shared_job_offers() {
return $this->job_offers()->where(function ($query) {
$query->where([
['subscription', '=', 3],
['disable_share', '=', false]
])->orWhere([
['subscription', '!=', 3],
['manual_share', '=', true]
]);
});
}
推荐阅读
- php - 引导轮播显示自定义分类而不是自定义帖子
- c# - 未声明 Autofac 范围
- database - 获取 ORA - 01653:即使在无限配额的情况下也无法扩展表
- java - 打印 IntegerList - NullPointerException(线程)
- python - 相对于另一列中的值对一列进行子集化
- python - 使用坐标函数初始化 NumPy 矩阵的最有效方法
- python - python - 如何使用直流电机的编码器测量来控制机器人的运动?
- java - java eclipse debug从不进入某些mvc服务类
- sql-server - 从包含 NVARCHAR(MAX) 列的表中加载数据 - 由于值被截断,因此无法转换为字符串
- php - php sql依赖下拉列表