2

抱歉问题标题,但我真的找不到合适的标题。

我使用 Laravel 3 和 Eloquent 模型(Laravel 中的第一个项目)。我有一个user,listitem模型。用户无法获取任何列表,列表可以获取项目。但是用户可以订购商品,因此订单是按用户/商品保存的。

使用以下数据会更清楚(为清楚起见进行了简化):

数据库表:

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)--> 包含用户订单项目的数组。

有人可以告诉我实现这一目标的方法吗?

4

2 回答 2

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;
}
于 2013-09-02T12:07:32.200 回答
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();
}
于 2013-09-02T20:38:41.230 回答