选择对关系有雄辩的专栏

时间:2018-07-12 11:19:54

标签: laravel join eloquent laravel-5.5

我有两个看起来像这样的表:

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并在地址表中搜索名字?

亲切的问候

1 个答案:

答案 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')
    ];
});