【问题标题】:Laravel Search Relations whereHasLaravel 搜索关系 whereHas
【发布时间】:2015-06-05 17:12:12
【问题描述】:

我正在尝试搜索产品,但没有返回任何结果。我怀疑它与 whereHas 函数有关,但我无法弄清楚。这是我的代码:

我的关系:

类别模型:

class Categories extends Eloquent {

    public function product()
    {
        return $this->hasMany('Products')->orderBy('name');
    }
}

产品型号:

class Products extends Eloquent {

    public function category()
    {
        return $this->belongsTo('Category')->orderBy('name');
    }
}

我的搜索功能:

public function search()
{
    $search         = Input::get('search');

    $result             = Products::where('name', 'LIKE', '%'. $search .'%')->get();

    if ($result->first()) {

        return View::make('groceries.index')
        ->with('categories', Categories::with('product')->orderBy('name', 'asc')
        ->whereHas('product', function($query) use ($search)
        {
            $query->where('name', 'LIKE', '%'.$search.'%');
        }));
    }
}

在视图中:

@foreach ($categories as $category)

//do stuff

    @foreach ($category->product as $products)

//Show results

    @endforeach

@endforeach

【问题讨论】:

    标签: laravel search


    【解决方案1】:

    您必须致电get() 才能获取数据。 而且我认为这将是更具可读性的代码。

    public function search()
    {
        $search         = Input::get('search');
        $result         = Products::where('name', 'LIKE', '%'. $search .'%')->get();
    
        if ($result->first()) {
            $categories = Categories::with('product')->orderBy('name', 'asc')
                                     ->whereHas('product', function($query) use ($search){
                                            $query->where('name', 'LIKE', '%'.$search.'%');
                                      })->get();
            return View::make('groceries.index')
                       ->with('categories', $categories);
        }
    }
    

    【讨论】:

    • 谢谢,确实忘记了 get()... :) 太棒了!
    猜你喜欢
    • 2017-10-17
    • 1970-01-01
    • 2014-01-11
    • 2020-12-23
    • 2022-08-19
    • 2015-10-30
    • 2015-06-11
    • 1970-01-01
    • 2016-09-05
    相关资源
    最近更新 更多