Php 带子查询的Laravel连接

Php 带子查询的Laravel连接,php,mysql,laravel,eloquent,Php,Mysql,Laravel,Eloquent,我有两个模型User和Address,一个用户可以有多个地址,但我只想获取primary(其中primary=true) 这就是我尝试过的,我在列表中找到了多个用户 $users = User::join('addresses', 'addresses.user_id', 'users.id') ->select('name','phone_number','address','landmark','city','state','pincode','users.s

我有两个模型User和Address,一个用户可以有多个地址,但我只想获取
primary(其中primary=true)

这就是我尝试过的,我在列表中找到了多个用户

$users = User::join('addresses', 'addresses.user_id', 'users.id')
             ->select('name','phone_number','address','landmark','city','state','pincode','users.status')
             ->get();
我也试过了,但是我没有得到任何数据

$users = User::join('addresses', 'addresses.user_id', 'users.id')
             ->where('addresses.primary', true)
             ->select('name','phone_number','address','landmark','city','state','pincode','users.status')
             ->get();
多谢各位

Collection {#375 ▼
  #items: array:8 [▼
    0 => User {#376 ▶}
    1 => User {#377 ▼
      #attributes: array:9 [▼
        "name" => "Colin Sushanth"
        "phone_number" => "9987217545"
        "address" => "2nd Cross 3rd street, y this is my address"
        "landmark" => "Near the address"
        "city" => "Mangalore"
        "state" => "Karnataka"
        "pincode" => 575002
        "status" => "valid"
        "primary" => "true"
      ]
    }
    2 => User {#378 ▶}
  ]
}
你应该试试这个:

$users = User::join('addresses', 'addresses.user_id', 'users.id')
             ->where('addresses.primary','=',1)
             ->select('name','phone_number','address','landmark','city','state','pincode','users.status')
             ->get();
或:

最新答案 刀片文件:

@if(isset($users))

  @foreach($users as $user)

    @if($user->primary === 'true')

        //Your code

    @endif

  @endforeach

@endif

我会用有说服力的模型来做

那么你会怎么做

User::whereHas('primary')->pluck('name','phone_number','address','landmark','city','state','pincode','users.status')
你的模型会像这样

 public function addresses()
    {
        return $this->belongsTo('App\Models\Address');
    }

    public function primary()
    {
        return $this->addresses->primary == true;
    }

让我们从这一点开始:为什么你要使用
join
而不仅仅是雄辩的关系?不了解primary(其中primary=true)@AddWeb解决方案我在
addresses
中有一个名为primary的专栏,我只想知道用户的地址,这是主要的感谢您的时间,非常感谢,
primary
字段将不为
NULL
它将为
true
false
,我想得到地址,地址是
primary=true
@MrRobot Ok让我检查一下,我已经将主字段的枚举设置为
(真/假)
,所以我尝试了第二种解决方案,我没有得到任何错误,但我没有得到任何数据。感谢you@MrRobot尝试使用whereHas('addresses.primary')可以是work@MrRobot很高兴随时为您提供帮助和欢迎谢谢您的回复,尝试了您的解决方案我收到了一个异常
(1/1)ErrorException尝试获取非对象的属性
哪个对象以及您的地址模型叫什么?如果您有一个?我的错,这是一个输入错误,现在我有一个不同的
属性[primary]在此集合实例上不存在。
可能需要在where方法上放置get()或all()
 public function addresses()
    {
        return $this->belongsTo('App\Models\Address');
    }

    public function primary()
    {
        return $this->addresses->primary == true;
    }