我正在开发一个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结果。请帮忙
答案 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');
}
}