多个模型关联时,增加条件判断

需求大概如下(使用查询我可以完成,但是使用模型就是解决不了,希望可以使用模型完成,增加以下这方面自己的了解),
用户表user_list,有属性id,full_name,user_staus
卡片表card_list,有属性id,user_id,card_status,card_info
现在想获取所有user_staus=1的card信息,实际sql大概是

select * from user_list a inner join card_list on a.id=b.user_id where a.user_status=1

也就是代码块中的where(‘user_status’, 1),但是并不生效,在论坛中,官网都查过了,有看到使用find(id)->userList()这样链式调用,但是和我需求不太符合,希望知道的大佬指导一下。

CardListModel文件
protected $table = 'card_list';
public function userList(): BelongsTo
{
return $this->belongsTo('App\Models\UserList', 'user_id');
}

获取信息代码
$data = CardList::query()
    ->with([
          'userList' => function ($query) {
              $query->select('id', 'full_name','user_status')
                    ->where('user_status', 1);
            }
        ]
  );
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
最佳答案
$data = CardList::query()
    ->with([
          'userList' => function ($query) {     $query>select('id','full_name','user_status')}])->whereHas('userList',function($q){
       $q->where('user_status', 1);
});

楼上的也可以,不过限定的太死了,可以使用 whereHas

3年前 评论
SkyTing (楼主) 3年前
zxx (作者) 3年前
SkyTing (楼主) 3年前
讨论数量: 3
public function userList(): BelongsTo
{
        return $this->belongsTo('App\Models\UserList', 'user_id')->whereUserStatus(1);
}
3年前 评论
playmaker 3年前
SkyTing (楼主) 3年前
$data = CardList::query()
    ->with([
          'userList' => function ($query) {     $query>select('id','full_name','user_status')}])->whereHas('userList',function($q){
       $q->where('user_status', 1);
});

楼上的也可以,不过限定的太死了,可以使用 whereHas

3年前 评论
SkyTing (楼主) 3年前
zxx (作者) 3年前
SkyTing (楼主) 3年前

首先,定义关联关系(userList)模型中,应该使用has..(主副表的关系),第二满足这个需求使用whereHas就行了

3年前 评论
SkyTing (楼主) 3年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!