对不起问题标题,但我找不到合适的标题。
我使用Laravel 3和Eloquent模型(Laravel的第一个项目)。
我有user
,list
和item
模型。用户无法获取任何列表,列表可以获取项目。但是用户可以订购商品,因此每个用户/商品都会保存订单。
以下数据会更清晰(为简洁起见,简化了):
数据库表:
USER
--------
id
name
LIST
-------
id
name
ITEM
-------
id
list_id
name
USER_ITEM_ORDER
---------------
user_id
item_id
order
列表模型:
class List extends Eloquent {
public function items() {
return $this->has_many('Item');
}
}
现在我想使用列表模型根据用户获取所有项目$list->items($user_id)
- >包含用户订单的项目的数组。
有人能告诉我实现这个目标的方法吗?
答案 0 :(得分:0)
请尝试使用此代码:
public static function NAMEUserId() {
$query = DB::table('username')
->select(array('users.username', DB::raw('NAME(user's.id) as UserID')))
->join('users', 'items.user_id', '=', 'users.id')
->group_by('users.id')
->order_by('usersid', 'desc')
->get();
return $query;
}
答案 1 :(得分:0)
呀!我修好了它。 :D我会回答我自己的问题,因为有一个投票...
这很简单,只需在返回的对象上使用Fluent,如下所示:
public function items($user_id = 0) {
$items = $this->has_many('Item');
// do we need to get the order?
if($user_id != 0) {
$items = $items->left_join('user_item_order', 'items.id', '=', 'user_item_order.item_id')
->where('user_item_order.user_id', '=', $user_id)
->order_by('user_item_order.order', 'asc');
}
return $items->get();
}