【问题标题】:How can I fetch this info in laravel Eloquent如何在 laravel Eloquent 中获取此信息
【发布时间】:2013-09-05 12:03:02
【问题描述】:

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

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

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

数据库表:

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

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

【问题讨论】:

    标签: database laravel eloquent laravel-3


    【解决方案1】:

    请尝试使用此代码:

    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;
    }
    

    【讨论】:

    • 感谢您的回答。但我不想计算用户添加的项目总数,我想获取所有项目并且这些项目设置了用户的 order 属性。
    • 是指您希望通过用户名保留订单详细信息?
    • 我认为是的。但可以肯定的是;每个用户都可以订购相同的列表项。系统保存每个用户的订单。我想收到用户订单的商品。
    • 感谢您的尝试。我找到了解决方案,看看我的答案:)
    • 太好了。你是怎么做到的?
    【解决方案2】:

    是的!我修好了它。 :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();
    }
    

    【讨论】:

      猜你喜欢
      • 2014-07-11
      • 1970-01-01
      • 1970-01-01
      • 2019-10-04
      • 1970-01-01
      • 2012-02-17
      • 1970-01-01
      • 2016-06-23
      • 2018-08-21
      相关资源
      最近更新 更多