首页 > 解决方案 > Laravel 6 - whereHasMorph 关系返回空

问题描述

我是 laravel 的新手Polymorphic Relationship。我有 2 张桌子SupplierProduct而且Category每张桌子都有,所以我决定使用Polymorphic Relationship. 我想查询supplier-category但它的返回empty数组。

// 我的类别模型

class Category extends Model
{
    protected $fillable = ['categorizable_type', 'categorizable_id'];

    public function categorizable()
    {
        return $this->morphTo();
    }
}

// 我的供应商模型

class Supplier extends Model
{
    protected $fillable = ['name', 'email', 'phone'];

    public function categories()
    {
        return $this->morphMany(\App\Category::class, 'categorizable');
    }
}

// 我的产品型号

class Product extends Model
{
    protected $fillable = ['product_code', 'product_name'];

    public function categories()
    {
        return $this->morphMany(\App\Category::class, 'categorizable');
    }
}

// 而在 SupplierController 我想查询categorizable_type

    public function index(Request $request)
    {
        // $product = Category::all();
        $product = Category::whereHasMorph('categorizable', Supplier::class , function($query){
                $query->where('categorizable_type', 'like', '%foo%');
        })->get();

        dd($product);
        // return response()->json($product);
    }

提前致谢...

标签: phplaravel

解决方案


我通过更改我的代码使其工作,如下所示

    $product = Category::whereHasMorph('categorizable', Supplier::class)->get();

推荐阅读