使用Eloquent ORM模型的关联查询示例

方法:名片表,whereHas用户收藏表,模糊查询

$query = Card::query()
->whereHas('holder', function (Builder|HasMany $query) {
    $query->where('user_id', '=', user_id());
})
->select(Card::FIELD_PUBLIC)
->where(function (EloquentBuilder $query) use ($keyword) {
    $query->orWhere('real_name', 'like', '%' . $keyword . '%')
        ->orWhere('company_name', 'like', '%' . $keyword . '%')
        ->orWhere('job_title', 'like', '%' . $keyword . '%')
        ->orWhere('company_profile', 'like', '%' . $keyword . '%');
});

$paginator = $query->paginate($limit);
$total = $paginator->total();
$items = $paginator->items();

方法:用户收藏表,whereHas名片表,模糊查询

$query = CardHolder::query()
    ->with([
        'card' => function (Builder|HasOne $builder) use ($keyword) {
            $builder->select(Card::FIELD_PUBLIC);
        }
    ])
    ->where('user_id', '=', user_id())
    ->whereHas('card', function ($query) use ($keyword) {
        $query->where(function (Builder|HasOne $builder) use ($keyword) {
            $builder->orWhere('real_name', 'like', '%' . $keyword . '%')
                ->orWhere('company_name', 'like', '%' . $keyword . '%')
                ->orWhere('job_title', 'like', '%' . $keyword . '%')
                ->orWhere('company_profile', 'like', '%' . $keyword . '%');
        });
    });

$paginator = $query->paginate($limit);
$total = $paginator->total();
$items = $paginator->items();
最后修改:2025 年 02 月 12 日 01 : 10 PM
如果觉得我的文章对你有用,请随意赞赏

发表评论