0

2 つのテーブルがあり、1 つは Quotes と呼ばれ、もう 1 つは Invoices と呼ばれます。請求書なしですべての見積もりを取得したい。以下は私がこれまでに持っているコードです。すべての引用を取得することしかできません。このクエリを変更するにはどうすればよいですか

$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 |                             |
+--------------+------------------+------+-----+---------------------+-----------------------------+
4

2 に答える 2

0

以下を使用できます。

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

Quotation上記のコードは、モデルに関係が設定されていることを前提としています。

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

このhasメソッドは、最初の引数として定義した関係に含まれるアイテムの総数をチェックしますinvoices。2 番目の引数は未満の比較で、3 番目は比較するカウントです。したがって、これにより、請求書数が 1 未満のすべての見積もりが検索されます。

リレーションのクエリの詳細については、ここの「リレーションシップの存在のクエリ」を参照してください。

于 2016-01-31T01:23:01.730 に答える
0

Emn1ty のおかげで、以下のコードを追加することで動作するようになりました

$quotations = Quotation::has('taxInvoices', '<', 1)->get();
于 2016-02-01T02:09:52.120 に答える