Php 带子查询的Laravel连接
我有两个模型User和Address,一个用户可以有多个地址,但我只想获取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
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;
}