我有一个数据库,其中每个订单都有一个客户的引用,其中有一个用户的引用。每个订单都有一个客户,每个客户都有一个用户。现在,我想访问属于某个用户的所有订单。在SQL中,我会这样写:
SELECT * FROM orders WHERE customer_id IN (SELECT id from customers WHERE user_id = 1)
我如何在不使用SQL的情况下在Laravel中访问它们。谢谢!
发布于 2018-06-09 02:19:33
DB::table('orders')
->whereIn('customer_id', function($query)
{
$query->select('id')
->from('customers')
->where('user_id', 1);
})
->get();
发布于 2018-06-09 08:23:34
正如安伯指出的,你应该使用models和relationships。
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;
https://stackoverflow.com/questions/50765851
复制相似问题