Реализация подзаголовков SQL в Laravel - PullRequest
0 голосов
/ 08 июня 2018

У меня есть База данных, в которой каждый Заказ имеет ссылку на Клиента, которая имеет ссылку на Пользователя.Каждый заказ имеет одного клиента, и каждый клиент имеет одного пользователя.Теперь я хотел бы получить доступ ко всем Заказам, которые принадлежат Пользователю.В SQL я написал бы:

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

Как я могу получить к ним доступ в Laravel без использования SQL.Спасибо!

Ответы [ 3 ]

0 голосов
/ 08 июня 2018

реализуйте следующим образом: в вашей пользовательской модели внедрите клиент отношения, подобные этим:

public function customer {
   $this->belongsTo(Customer::class)->with('order'); // calling order relationship from customer model
 }

затем в вашей клиентской модели.отношения с порядок модель, как это:

public function order {
 $this->belongsTo(Order::class); 
}

затем вы реализуете запрос, как это:

 User::with('customer')->get();
0 голосов
/ 09 июня 2018

Как указывает Айнбер, вы должны использовать модели и отношения .

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 голосов
/ 08 июня 2018
DB::table('orders')
->whereIn('customer_id', function($query)
{
    $query->select('id')
          ->from('customers')
          ->where('user_id', 1);
})
->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...