关于laravel:laraveladmin-关联查询

原文地址:https://blog.csdn.net/yang101…

rights_exchange_log表为权利兑换记录,关联了用户id(user_id),须要依据用户手机号来查问用户兑换记录,冀望的最终SQL如下:

SELECT
    * 
FROM
    `rights_exchange_log`
    LEFT JOIN `fk_member` ON `fk_member`.`id` = `rights_exchange_log`.`member_id` 
WHERE
    `fk_member`.`tel` = 12312321312

办法1:model中做下关联,controller层像一般变量间接查问过滤即

public function crmMember()
{
    return $this->belongsTo(\App\Models\crm\MemberModel::class, 'member_id');
}

$grid->filter(function ($filter){
    $filter->like('crmMember.tel', '用户手机号');
});

办法2:手动查问而后拼接条件

$grid->filter(function ($filter){
    $filter->where(function ($query) {
        $uid_list = \App\Models\halo\MemberModel::query()->where('mobile', 'like', "%{$this->input}%")->select('id')->get()->toArray();
        $query->whereIn('member_id', $uid_list);
    }, '用户手机号');
});

这种办法能够跨库查问,我理论场景rights_exchange_log在crm库,member在用户核心库,这种办法刚好实用

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理