php - 如何通过关系表列条件查询表
问题描述
我有模型用户
class Users extends Model implements AuthenticatableContract
{
use Authenticatable,HasApiTokens;
protected $primaryKey = 'user_id';
protected $fillable = ['email','password','email_token', 'verified'];
public function user_info()
{
return $this->hasOne('App\Models\UserInfo','user_id');
}
}
在控制器中,我想查询关系表列 "kind" 等于 1 的所有用户。
So Users table has user_info_id(one to one) . User_info has kind_id.
我想通过关系表列 kind_id 查询用户。我可以通过 left join 做到这一点。但是我怎么能用关系来做呢?
我试过这样但它不起作用
$univer_list = Users::with('user_info')->where('is_university',1)
->where('kind_id',1);
解决方案
您可以在with
$univer_list = Users::with(['user_info' => function($q) {
$q->where('kind_id', 1);
}])->where('is_university', 1)->get();
我假设您is_university
存在于users
表中,并且您的kind_id
列存在于user_info
表中。
推荐阅读
- swiftui - SwiftUI 工作表无限循环?
- sql - 为什么运行小型、半频繁的插入作业时,我的 Postgresql 查询性能在 10 亿行表上会受到影响?
- tsql - 用分隔符和数字替换数字
- javascript - 构建(React)时损坏的图像链接?
- assembly - Apple IIe 6502 组装存取盘
- python - python finditer获取捕获组的开始结束
- c++ - Visual Studio 调试器,将内存解释为无限制或不同类型?
- twitter-bootstrap - 带有顶部导航和可滚动内容的 bootstrap 5 侧边栏
- reactjs - 单击子组件时关闭弹出框
- python - 使用网络抓取处理运行不一致