我有两个看起来像这样的表:
Addresses
ID | first_name | last_name | street
Clients
ID | address_id | assignment_id | comment
现在,我想通过搜索输入和地址表上的ajax搜索名称。但仅适用于客户。意思是,我必须使用laravel关系。我已经设置好了:
Address Model:
public function clients()
{
return $this->hasMany('App\Client');
}
Client Model:
public function address()
{
return $this->belongsTo('App\Address');
}
我要重新调整的是CLIENTS表的ID,每个客户端的地址表的名字和姓氏。到目前为止,这是我的查询:
$clients = Address::whereHas('clients', function ($query) use ($searchString){
$query->select("id AS clientID")->where('last_name', 'like', '%'.$searchString.'%');
})->get();
但是,我不知道如何从客户表中选择ID。$query->select("id AS clientID")
这不起作用。
如何选择客户表的ID并在地址表中搜索名字?
亲切的问候
答案 0 :(得分:0)
确切了解您的需求时会遇到一些麻烦。这样可以解决您的问题吗?
$addresses = Address::whereHas('clients')
->with('clients')
->where('last_name', 'like', '%'.$query.'%')
->get();
$result = $addresses->map(function($address) {
return [
'first_name' => $address->first_name,
'last_name' => $address->last_name,
'ids' => $address->clients->pluck('id')
];
});