Laravel使用模型连接两个表

时间:2016-06-27 16:29:31

标签: php laravel

我正在开发一个laravel应用程序,我想在其中连接两个表并获得结果。我有两个模型,第一个是category.php,如下所示。

class Category extends Model implements AuthenticatableContract, CanResetPasswordContract
{


    public function products()
    {
        return $this->hasMany('App\Products', 'product_category_id');
    }



}

第二个是products.php

class Products extends Model implements AuthenticatableContract, CanResetPasswordContract
{


    public function category()
    {
        return $this->belongsTo('App\Category', 'product_category_id');
    }

}

现在,当我编写查询Category::where('status', 1)->get()时,它会给出结果。但是当我尝试使用Category::find(1)->products()->where('status', 1)->get();加入表时,它会给出null结果。请帮忙

2 个答案:

答案 0 :(得分:0)

获得产品关系并过滤结果的正确方法是:

Category::where('status', 1)->with(['products' => function ($query) {
   $query->where('name', 'like', '%search_string%');
}])->get();

答案 1 :(得分:0)

我认为这就是你要找的东西。搜索与查询字符串匹配的产品 - 并获取每个结果的类别。答案取决于您与埃弗顿答案的对应情况。

Products::where('name', 'like', '%search_string%')->with(['category' => function ($category) {
    $category->where('status', 1);
}])->get();

改变关系:

class Products extends Model implements AuthenticatableContract, CanResetPasswordContract
{    
    public function category()
    {
        return $this->HasMany('App\Category', 'product_category_id');
    }

}