首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >用Laravel实现SQL子语句

用Laravel实现SQL子语句
EN

Stack Overflow用户
提问于 2018-06-09 01:36:51
回答 2查看 53关注 0票数 0

我有一个数据库,其中每个订单都有一个客户的引用,其中有一个用户的引用。每个订单都有一个客户,每个客户都有一个用户。现在,我想访问属于某个用户的所有订单。在SQL中,我会这样写:

SELECT * FROM orders WHERE customer_id IN (SELECT id from customers WHERE user_id = 1)

我如何在不使用SQL的情况下在Laravel中访问它们。谢谢!

EN

回答 2

Stack Overflow用户

发布于 2018-06-09 02:19:33

DB::table('orders')
->whereIn('customer_id', function($query)
{
    $query->select('id')
          ->from('customers')
          ->where('user_id', 1);
})
->get();
票数 2
EN

Stack Overflow用户

发布于 2018-06-09 08:23:34

正如安伯指出的,你应该使用modelsrelationships

class Order extends Model {}

class Customer extends Model {}

class User extends Model {
    public function orders() {
        return $this->hasManyThrough(Order::class, Customer::class);
    }
}

然后您可以获得用户的订单,如下所示:

$orders = User::find(1)->orders;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50765851

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档