php - 2つのテーブルを結合し、cakephpの3番目のコントローラーにデータを表示します

原文 php mysql cakephp

3つのモデルQuotation、QuotionItem、およびJobがあります。
私の主な目的は、ジョブコントローラーでQuotationおよびQuotationItemのテーブルに対して左結合を行うことです。 QuotationItemの代わりに、ジョブテーブルが左結合で使用されているため、達成できません。

      $this->Job->unbindModel(
    array('belongsTo' => array('Quotation','QuotationItem')), true
);
            $options = array(
'fields' => array(
    'QuotationItem.id',
    'QuotationItem.Quot_id',
    'QuotationItem.item_sno',
    'QuotationItem.job_desc',
    'QuotationItem.selected_qty',
    'QuotationItem.paper_id',
    'QuotationItem.plate_id',
    'QuotationItem.design_id',
    'QuotationItem.ink_id',
    'QuotationItem.misel_id',
    'QuotationItem.plate_size',
    'QuotationItem.paper_size',
    'QuotationItem.paper_type',
    'QuotationItem.paper_gsm',
    'QuotationItem.plate_qty',
    'QuotationItem.paper_qty',
    'QuotationItem.ink_qty',
    'QuotationItem.plate_color',
    'QuotationItem.ink_color',
    'QuotationItem.ink_code',
    'QuotationItem.plate_price',
    'QuotationItem.paper_price',
    'QuotationItem.ink_price',
    'QuotationItem.design_price',
    'QuotationItem.plate_total',
    'QuotationItem.paper_total',
    'QuotationItem.ink_total',
    'QuotationItem.design_total',
    'QuotationItem.printing_cost',
    'QuotationItem.prepress_cost',
    'QuotationItem.design_cost',
    'QuotationItem.press_cost',
    'QuotationItem.folding_cost',
    'QuotationItem.binding_cost',
    'QuotationItem.block_cost',
    'QuotationItem.lamination_cost',
    'QuotationItem.uv_cost',
    'QuotationItem.stamping_cost',
    'QuotationItem.diecutting_cost',
    'QuotationItem.sewing_cost',
    'QuotationItem.perfectbind_cost',
    'QuotationItem.saddlestitch_cost',
    'QuotationItem.emboss_cost',
    'QuotationItem.cutting_cost',
    'QuotationItem.labor_charges',
    'QuotationItem.others',
    'QuotationItem.cost_total',
    'QuotationItem.total_item_sum',
    'QuotationItem.net_total',
    'QuotationItem.created',
    'QuotationItem.modified',
    'QuotationItem.status',
    'Quotation.Quot_id',
    'Quotation.job_item',
    'Quotation.customer_id',
    'Quotation.customer_name',
    'Quotation.customer_phone',
    'Quotation.customer_email',
    'Quotation.customer_address',
    'Quotation.salesperson',
    'Quotation.pay_terms',
    'Quotation.contact_id',
    'Quotation.status',
    'Quotation.discount',
    'Quotation.total',
    'Quotation.created',
    'Quotation.modified',
),
'joins' => array(

    array(

        'table' => 'quotation',
        'alias' => 'Quotation',
        'type' => 'left',
                    'conditions' => array('QuotationItem.Quot_id = Quotation.Quot_id'),
    )
),
'conditions' => array(
    '1',
));$data = $this->Job->find('all', $options);`
答え
検索はジョブではなく見積で実行する必要があります。モデルはテーブルに関連付けられており、同じものと考えてください。検索機能を実行しているモデルとは関係のない別のテーブルから何かを見つけることはできません。

モデルのロード時にsql 42000 error. Table/alias not uniqueを取得している場合は、モデルが既にロードされているか、何かにすでに使用されている名前で別名を付けようとしています-これはできません。

モデルの関連付けをまだよく理解していない場合に、ジョブコントローラーから3つのモデルすべてにアクセスできるようにする最も簡単な方法は、ジョブコントローラーでpublic $uses = array('Job','Quotation','QuotationItem');を宣言することです。

Quotationにアクセスする方法を別にしても、やりたいことは次のとおりです。

$this->Quotation->find('all',array(
    'fields' => '*',
    'joins' => array(
        array(
            'table' => 'quotation',
            'alias' => 'Quotation',
            'type' => 'left',
            'conditions' => array(
                'QuotationItem.Quot_id = Quotation.Quot_id'
            )
        )
    )
));
関連記事

php - プロパティの代わりにゲッターに基づいてsymfonyコレクションを検証する

php - Yii変更をローカルマシンにキャッシュ

php - Wamp Serverが保存されているフォルダーから.pdfおよび.docxファイルをダウンロードするためのPHPコード

php - フォームから選択した複数のPHPエコーバック

php - 別のページとしてページに投稿する-Facebook API

php - 最初の行のみを表示する演算子間のMySQL

php - 特定の投稿からWordpressブログフィードを開始する

php - laravelのCron(https://github.com/liebig/cronを使用)

php - Joomlaの兄弟アイテムを一覧表示します! K2商品ページ

php - インポートされた依存関係注入構成にコンテナーがありません