【发布时间】:2017-09-05 08:30:16
【问题描述】:
我试图在两个模型之间建立复杂的关系。
目标是使用$supplier->supply_orders 访问用户提供商品的订单。
这会抛出:LogicException: Relationship method must return an object of type Illuminate\Database\Eloquent\Relations\Relation。
有了我得到的代码,我可以使用$supplier->supply_orders()->get(),但是,当我尝试将它用作它抛出的关系时。既然这是一个关系,我应该能够将它包装在一个关系中,但是我该怎么做呢?
供应商模式:
class Supplier extends Model {
public function supply_orders() {
return Order::query()
->select('order.*')
->join('item_order', 'order.id', '=', 'item_order.order_id')
->join('item', 'item_order.item_id', '=', 'item.id')
->where('item.supplier_id', '=', $this->id);
}
}
~~~一大堆我认为你不需要但可能需要的后台信息~~~
sql 表:
supplier
- id
items:
- id
- supplier_id
item_order:
- id
- order_id
- item_id
orders:
- id
其他 Eloquent 模型:
class Item extends Model {
public function orders() {
return $this->belongsToMany('Order');
}
}
class Order extends Model {}
这应该如何工作的示例:
$supplier = factory(Supplier::class)->create();
$item = factory(Item::class)->create([
'supplier_id' => $supplier->id,
]);
$order = factory(Order::class)->create();
$order->items()->attach($item);
$orders = $supplier->supply_orders // Throws LogicException
这会抛出:LogicException: Relationship method must return an object of type Illuminate\Database\Eloquent\Relations\Relation
【问题讨论】:
标签: laravel laravel-5 eloquent