【发布时间】:2018-10-18 10:28:16
【问题描述】:
我在多态关系中遇到了一个问题,我无法让 whereHas 工作。基本上我有一个我想申请的“where”条件。 关系代码可以正常返回相关模型,但一旦应用 whereHas 就会返回错误。
下面是代码
订单类:
class Order extends Model
{
// function to return orders
public static function getAllOrders()
{
return $orders = Order::with('part.pcategory')->whereHas('part', function ($query)
{
$query->where('cat_id',4);
})->get();
}
// the relation
public function part()
{
return $this->morphTo(null,'department_short_code','part_stock_number','stock_number', 'dep_short_code');
}
}
SFD 零件类:
class sfd_part extends Model
{
public function orders()
{
return $this->morphMany('App\Order','part','department_short_code','part_stock_number');
}
public function pcategory()
{
return $this->belongsTo('App\Pcategories','cat_id', 'category_id');
}
}
当我调用 getAllOrders() 时,会出现以下错误
SQLSTATE[42S22]:找不到列:1054 'where 子句'中的未知列'cat_id'(SQL:从
orders中选择计数(*)作为聚合,其中存在(从orders中选择* 作为laravel_reserved_0其中laravel_reserved_0.id=laravel_reserved_0.part_stock_number和cat_id= 2 和laravel_reserved_0.id=laravel_reserved_0.part_stock_number和cat_id= 2)
数据库表结构
我试图获取的数据是与每个部分相关的订单列表。然后我得到与这部分相关的类别名称。此外,我想通过使用 whereHas 过滤此列表,例如,所有来自特定类别的订单。
Orders 表有与部分链接的订单。这部分可以在 3 个表中的任何一个中,这就是为什么我在两个键 department_short_code 和 part_stock_number 上使用多态关系中继
【问题讨论】:
-
你能告诉我你的表结构和你想得到什么数据吗??
-
@punk73 我更新了我的问题。我希望它现在清楚
-
Laravel 5.8.27 添加
whereHasMorph():laravel.com/docs/…
标签: php foreign-keys relational-database laravel-5.6 laravel-query-builder