簡體   English   中英

如何從關系數據中搜索? 在 laravel

[英]How to search from relationship data ? In laravel

public function scopeSearch($query, $value)
{
    $searchValues = explode(' ', $value);
    if (!$value) return $query;
    return $query->where(function ($q) use ($searchValues) {
        foreach ($searchValues as $token) {
            $q->orWhere('name', 'like', "%{$token}%");
            $q->orWhere('street', 'like', "%{$token}%");
        }
    });
}

我想搜索數據。 這個 model 還有

public function brands()
{
    return $this->belongsToMany(Brand::class, 'dealer_brands');
}
public function province()
{
    return $this->belongsTo(Province::class);
}

如何從關系中獲取數據。 就像 Dealer(model) 有數據 Nmae = josh,brand_id = 1 {brand.name = samsung},province_id = 2 (province.name = "aligora")。 當我搜索 Josh Samsung Alogora 時,我想獲取數據。 當我只搜索aligora時,我想得到model的數據有省aligora。 如何修改代碼?

查看您的 model 關系。 這可能對你有用

    public function scopeSearch($query, $value)
    {
        if (!$value) return $query;
        $searchValues = explode(' ', $value);
        return $query->where(function ($q) use ($searchValues) {
            foreach ($searchValues as $token) {
                $q->where('name', 'like', "%{$token}%")
                    ->orWhere('street', 'like', "%{$token}%")
                    ->orWhere('brands', function ($sub_q) use ($searchValues) {
                        $sub_q->where('name', 'like', "%{$token}%")
                            ->orWhere('street', 'like', "%{$token}%");
                    })
                    ->orWhere('province', function ($sub_q) use ($searchValues) {
                        $sub_q->where('name', 'like', "%{$token}%")
                            ->orWhere('street', 'like', "%{$token}%");
                    });
            }
        });
    }

我不知道相關表中的列名,所以重復名稱和街道。 您可以根據要求更改

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM