我有一个Laravel模型:
class Order extends Eloquent{
protected $table = 'orders';
public function orderItems(){
return $this->hasMany('OrderItem');
}
public static function findByUserMonthYear($user_id, $month, $year){
return Order::where('user_id', '=', $user_id)
->where('month', '=', $month)
->get();
// ->where('year', '=', $year);
}
}
当然我有一个OrderItem
类
class OrderItem extends Eloquent{ ...
但如果我这样做:
$order = Order::findByUserMonthYear(Auth::user()->id, Date::getDate(), 2014);
$order->orderItems();
我得到以下内容:
Call to undefined method Illuminate\Database\Eloquent\Collection::orderItems()
我做错了什么?如果我要将语句更改为Order::with('orderItems')
,则该关系似乎正常,但我想删除与当前orderItems
关联的所有Order
。
答案 0 :(得分:2)
你身边的->get()
找到了ByUserMonth正在返回一个Collection。如果此查询仅返回一个集合,则改为使用->first()
,但如果您的查询返回多个结果,则会急切加载orderItems的结果,如此;
public static function findByUserMonthYear($user_id, $month, $year){
return self::with('orderItems')->where('user_id', '=', $user_id)
->where('month', '=', $month)
->get();
// ->where('user_id', '=', $year);
}
然后您可以像这样访问结果;
@foreach($orders as $order)
{{$order->orderItem}}
@endforeach
这是因为返回是一个集合,所以你必须遍历它们。使用{{$order->orderItem}}
访问结果
我对此不太确定,但我认为你可以删除hasMany中的所有模型,如此; $order->orderItem()->delete();
返回orderItem()
是Query \ Builder实例。
答案 1 :(得分:-1)
你的第二堂课必须延伸订单班 将此行用于OrderItem类:
class OrderItem extends Order {