CakePHP 3 - załączanie tego samego modelu wiele razy

Funkcja contain CakePHP jest bardzo pomocna, gdy chcesz dołączyć wiele modeli. Ale kiedy musimy wykonać bardziej złożoną operację, taką jak wielokrotne dołączanie do tej samej tabeli w oparciu o kolumnę, musimy zaktualizować nasz model. W tym artykule wyjaśnię jak to zrobić. Załóżmy, że mamy tabelę klientów, w której mamy dwie kolumny, w których jest przechowywany identyfikator tabeli adresów, pierwsza kolumna jest przeznaczona na identyfikator adresu zamieszkania klienta, a druga na identyfikator adresu dostawy. Zauważ, że oba identyfikatory adresów pochodzą z tabeli adresów (addresses). Teraz musimy powiedzieć CakePHP, aby załadował dane zgodnie z naszymi potrzebami, więc otwórz model tabeli klienta i dodaj poniższy kod w funkcji initialize.

  1. public function initialize(array $config)
  2. {
  3. parent::initialize($config);
  4. $this->belongsTo('PermanentAddress', [
  5. 'foreignKey' => 'permanent_address_id',
  6. 'joinType' => 'LEFT',
  7. 'className' => 'Addresses'
  8. ]);
  9. $this->belongsTo('DeliveryAddress', [
  10. 'foreignKey' => 'delivery_address_id',
  11. 'joinType' => 'LEFT',
  12. 'className' => 'Addresses'
  13. ]);
  14. }
Teraz możemy użyć tego odniesienia aby załadować dane.
  1. $customerAddress = $this->CustomerAddresses->findByCompanyId($companyId)
  2. ->contain([
  3. 'PermanentAddress',
  4. 'DeliveryAddress'
  5. ])
  6. ->first();

Strona korzysta z plików cookies

Strona korzysta z plików cookies w celu realizacji usług i zgodnie z Polityką Plików Cookies. Możesz określić warunki przechowywania lub dostępu do plików cookies w Twojej przeglądarce.
OK
Więcej
Free cookie consent by cookie-script.com