【问题标题】:A shopping cart ORM check in LaravelLaravel 中的购物车 ORM 检查
【发布时间】:2013-10-07 09:12:56
【问题描述】:

这是我的表结构

用户

ID 用户名 密码

订单

ID 用户身份

order_details

ID product_id order_id

关系已经确定

用户.php

function orders() {
    return $this->hasMany('Order');
}

订单.php

function details() {
    return $this->hasMany('OrderDetail');
}

OrderDetail.php

我得到了用户id和产品id,我想检查用户是否购买了这个产品

User::find($userId)->orders()->details()->where('product_id', $productId)->count()会出错,因为订单返回多个数据,怎么检查?

【问题讨论】:

    标签: php laravel laravel-4


    【解决方案1】:

    你还不能用 Eloquent 轻扫一下。但是您可以轻松编写这样的函数来进行检查:

    public function hasBoughtProduct($product_id, $user_id)
    {
    
    $orders = Orders::with('details')->where('user_id','=',$user_id)->get();
    
    foreach($orders as $order)
    {
        $details = $order->details()->where('product_id', '=', $product_id)->count();
        if($details > 0)
        {
              return TRUE;
        }    
    }
    return FALSE;
    }
    

    如果这对您的需求不够有效,您可以考虑使用 Fluent 编写查询或覆盖您将预先加入表的 newQuery() 方法。如果这更适合您,您可以参考此答案以获取有关如何操作的更多详细信息:https://stackoverflow.com/a/19183957/385402

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-05
      相关资源
      最近更新 更多