CakePHP hasOne ineffeciency?

2 Cevap php

I was looking at examples on the CakePHP website, in particular hasOne used in linking models. http://book.cakephp.org/view/78/Associations-Linking-Models-Together

Benim soru bu veri dizisi yapısını oluşturmak için iki sorguları kullanarak CakePHP hasOne bağlantıyı kullanan bir model döndürülür?

Taken from CakePHP: //Sample results from a $this->User->find() call.

Array
(
    [User] => Array
        (
            [id] => 121
            [name] => Gwoo the Kungwoo
            [created] => 2007-05-01 10:31:01
        )
    [Profile] => Array
        (
            [id] => 12
            [user_id] => 121
            [skill] => Baking Cakes
            [created] => 2007-05-01 10:31:01
        )
)

Bu bütün mantıklı umuyoruz.

2 Cevap

Model::find kullanır hasOne ve belongsTo ilişkiler tarafından kaynak modeli ile ilişkili modelle kayıtları almak için katılır. Belirli SQL sorguları (bir Car belongsTo Driver modeli yapısını kullanarak) gibi görünmelidir:

SELECT `Car`.`brand`, `Car`.`colour`, `Driver`.`name`, `Driver`.`age`
    FROM `cars` AS `Car`
    LEFT JOIN `drivers` AS `Driver` ON `Car`.`id` = `Driver`.`car_id`
WHERE `Car`.`brand` = 'Aston Martin'

Her modele ait alanları tablo / model takma adı ile ilgili dizi elemanlarının içine çözümlenebilir:

  • Car.brand olur $result['Car']['brand']
  • Car.colour olur $result['Car']['colour']
  • Driver.name olur $result['Driver']['name']
  • Driver.age olur $result['Driver']['age']

Gerekli Sadece bir sorgu.

hasMany ve hasAndBelongsToMany dernekler için veri alınıyor ek sorgular, bazen çok daha fazlasını gerektirir.

Tüm hasOne ve belongsTo katılmak kullanılarak yapılır değil eminim çoğu eğer. böylece bir sorgu. Her zaman sql sorgu görmek için config.php 2 hata ayıklama ayarlayabilirsiniz