Rumah > pangkalan data > tutorial mysql > Bagaimanakah Saya Boleh Dapatkan Data daripada Berbilang Jadual Menggunakan JOIN dalam CakePHP?

Bagaimanakah Saya Boleh Dapatkan Data daripada Berbilang Jadual Menggunakan JOIN dalam CakePHP?

DDD
Lepaskan: 2025-01-03 10:10:39
asal
272 orang telah melayarinya

How Can I Retrieve Data from Multiple Tables Using JOIN in CakePHP?

Mencari Rekod dengan JOIN dalam CakePHP

Untuk mendapatkan semula data daripada berbilang jadual dalam satu pertanyaan menggunakan kaedah cari CakePHP, anda boleh menggunakan pelbagai teknik . Satu pendekatan ialah menggunakan perhubungan data terbina dalam rangka kerja dan gelagat pembendungan untuk mendapatkan semula data yang lancar.

Cara CakePHP

Pendekatan ini melibatkan penentuan hubungan antara model anda dan memanfaatkan tingkah laku Boleh Ditahan. Dengan mengkonfigurasi perhubungan seperti:

class User extends AppModel {
    public $actsAs = array('Containable');
    public $hasMany = array('Message');
}

class Message extends AppModel {
    public $actsAs = array('Containable');
    public $belongsTo = array('User');
}
Salin selepas log masuk

Anda kemudiannya boleh mendapatkan semula rekod berkaitan menggunakan parameter kandungan dalam kaedah cari:

$this->Message->find('all', array(
    'contain' => array('User'),
    'conditions' => array(
        'Message.to' => 4
    ),
    'order' => 'Message.datetime DESC'
));
Salin selepas log masuk

Custom SQL Joins

Sebagai alternatif, anda boleh menentukan gabungan SQL tersuai untuk menentukan perhubungan khusus antara jadual. Ini boleh berguna dalam senario yang lebih kompleks. Berikut ialah contoh:

$this->Message->find('all', array(
    'joins' => array(
        array(
            'table' => 'users',
            'alias' => 'UserJoin',
            'type' => 'INNER',
            'conditions' => array(
                'UserJoin.id = Message.from'
            )
        )
    ),
    'conditions' => array(
        'Message.to' => 4
    ),
    'fields' => array('UserJoin.*', 'Message.*'),
    'order' => 'Message.datetime DESC'
));
Salin selepas log masuk

Perhatikan bahawa kaedah ini memerlukan anda untuk menentukan secara manual medan yang anda ingin dapatkan daripada kedua-dua jadual.

Menggunakan Pelbagai Hubungan kepada Model Yang Sama

Dalam kes di mana anda perlu mendapatkan semula data daripada jadual yang sama melalui berbilang perhubungan, anda boleh menentukan berbilang hubungan dengan alias yang berbeza. Berikut ialah contoh:

class User extends AppModel {
    public $actsAs = array('Containable');
    public $hasMany = array(
        'MessagesSent' => array(
            'className' => 'Message',
            'foreignKey' => 'from'
        )
    );
    public $belongsTo = array(
        'MessagesReceived' => array(
            'className' => 'Message',
            'foreignKey' => 'to'
        )
    );
}
Salin selepas log masuk

Kini, anda boleh menggunakan gelagat pembendungan untuk mendapatkan semula rekod yang berkaitan dengan perhubungan ini:

$this->Message->find('all', array(
    'contain' => array('UserFrom'),
    'conditions' => array(
        'Message.to' => 4
    ),
    'order' => 'Message.datetime DESC'
));
Salin selepas log masuk

Dengan menggunakan teknik ini, anda boleh mendapatkan data daripada berbilang dengan cekap jadual dalam aplikasi CakePHP anda.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Dapatkan Data daripada Berbilang Jadual Menggunakan JOIN dalam CakePHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan