2016-01-31 2 views
0

У меня есть две таблицы, одна из которых называется котировки, а другая - счета-фактуры. Я хочу получить все цитаты без счетов-фактур. Ниже приведен код, который у меня есть. Я могу получить только все цитаты. Как я могу изменить этот запрос,запрос из двух таблиц с использованием laravel query builder + mysql

$quotations = Quotation::lists('id', 'id'); 


mysql> describe quotations; 
+---  ---- --------+------------------+------+-----+---------------------+-----------------------------+ 
| Field   | Type    | Null | Key | Default    | Extra      | 
+---------------+------------------+------+-----+---------------------+-----------------------------+ 
| id   | int(10) unsigned | NO | PRI | NULL    | auto_increment    | 
| customer_id | int(10) unsigned | NO | MUL | NULL    |        | 
| employee_id | int(10) unsigned | NO | MUL | NULL    |        | 
| exchange_rate | int(11)   | NO |  | 0     |        | 
| remark  | varchar(255)  | NO |  |      |        | 
| created_at | timestamp  | NO |  | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP | 
| updated_at | timestamp  | NO |  | 0000-00-00 00:00:00 |        | 
+---------------+------------------+------+-----+---------------------+-----------------------------+ 
mysql> describe invoices; 
+--------------+------------------+------+-----+---------------------+-----------------------------+ 
| Field  | Type    | Null | Key | Default    | Extra      | 
+--------------+------------------+------+-----+---------------------+-----------------------------+ 
| id   | int(10) unsigned | NO | PRI | NULL    | auto_increment    | 
| quotation_id | int(10) unsigned | NO | MUL | NULL    |        | 
| employee_id | int(10) unsigned | NO | MUL | NULL    |        | 
| amount  | int(11)   | NO |  | 0     |        | 
| balance  | int(11)   | NO |  | 0     |        | 
| created_at | timestamp  | NO |  | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP | 
| updated_at | timestamp  | NO |  | 0000-00-00 00:00:00 |        | 
+--------------+------------------+------+-----+---------------------+-----------------------------+ 

ответ

0

Вы можете использовать следующее:

Quotation::has('invoices', '<', 1)->get();

Это выше код предполагает, что вы имеете отношения, установленные в вашей Quotation модели , т.е.:

class Quotation 
{ 
    public function invoices() 
    { 
     return $this->hasMany('\Models\Invoice'); 
    } 
} 

Метод has будет проверять общее количество элементов в отношении, которое вы определили как первый аргумент invoices. Второй аргумент - сравнение меньше, чем третье - это счет, с которым вы хотите сравнить. Таким образом, это будет искать все котировки с подсчетом счета меньше единицы.

Подробнее about querying relations here под Запрос связи Существование.

+0

Спасибо за быстрый ответ. пожалуйста, уточните подробнее о своем ответе. «счет-фактура» не является атрибутом. Я хочу получить все цитаты, которые не имеют записей в таблице счетов-фактур –

+0

А, я неправильно понял отношение. Я уточню свой ответ. – jardis

+0

Спасибо за ответ, вы отвечаете правильно, но там вам нужно добавить -> get(); чтобы он работал. это должно быть как Quotation :: has ('invoices', '<', 1)-> get(); –

0

Я получил его на работу, добавив код ниже благодаря Emn1ty

$quotations = Quotation::has('taxInvoices', '<', 1)->get(); 
Смежные вопросы