Önceleri özyinelemeye dayanıyordum, ancak bazılarına çözüm getirmedim, sonra da bunun için Sarf Malzemenin iyi çalıştığını keşfettim.CakePHP'de İçeren Koşullar Eklenmesi
Bir film inceleme sitesi geliştiriyorum. Bu yüzden belirli bir Tür ile ilgili filmlerin listesini göstermem gerekiyor.
kod aşağıda bu var:
//example
$genre = "drama";
$options = array(
'contain' => array(
'Movie',
'MoveiGenre.Genre' => array(
'conditions' => array('MovieGenre.Genre.name = "'.$genre.'"')
),
'MovieGenre.Genre.name'
),
'recursive' => 2,
'limit' => 10
);
$this->paginate = $options;
$this->set('movies',$this->paginate());
asıl sorun burada başlıyor, bütün filmleri almak, onun tarz "dram" ile ilgili olmayan bile. Nerede yanlış gidiyorum? Bunu görebilirsiniz movie_genres İşte
-------------------------------
| id | movie_id | genre_id |
-------------------------------
| 1 | 1 | 1 |
| 2 | 1 | 2 |
| 3 | 2 | 2 |
-------------------------------
:
Tablo: filmleri
----------------------------
| id | title | description |
----------------------------
| 1 | mov1 | something1 |
| 2 | mov2 | something2 |
| 3 | mov3 | something3 |
----------------------------
Tablo: türler
---------------
| id | name |
---------------
| 1 | drama |
| 2 | sci-fi |
| 3 | comedy |
---------------
Tablo
beni veritabanı tablosu anlatayım bir mov ie_id'in birden fazla türü var. Ben sadece mov1
almalıyım ama her iki filmi de bir dizide alıyorum.
~~ EDIT ~~ oops !! Üzgünüz, bu kodu MoviesController
numaralı telefondan kullanıyorum. 3 tablonun her biri ilgili denetleyiciye sahiptir. Bu yüzden lütfen bana hangi kontrolörde kullanabileceğimi öner.
DÜZENLEME: 2
class Movie extends AppModel {
public $displayField = 'title';
public $actsAs = array('Containable');
public $hasMany = array(
'MovieGenre' => array(
'className' => 'MovieGenre',
'foreignKey' => 'movie_id',
'dependent' => false,
'conditions' => '',
'fields' => '',
'order' => '',
'limit' => '',
'offset' => '',
'exclusive' => '',
'finderQuery' => '',
'counterQuery' => ''
),
'MovieLanguage' => array(
'className' => 'MovieLanguage',
'foreignKey' => 'movie_id',
'dependent' => false,
'conditions' => '',
'fields' => '',
'order' => '',
'limit' => '',
'offset' => '',
'exclusive' => '',
'finderQuery' => '',
'counterQuery' => ''
),
);
}
Modeli: Tür
class Genre extends AppModel {
public $displayField = 'name';
public $hasAndBelongsToMany = array(
'Movie' => array(
'className' => 'Movie',
'joinTable' => 'movie_genres',
'foreignKey' => 'genre_id',
'associationForeignKey' => 'movie_id',
'unique' => 'keepExisting',
'conditions' => '',
'fields' => '',
'order' => '',
'limit' => '',
'offset' => '',
'finderQuery' => '',
'deleteQuery' => '',
'insertQuery' => ''
)
);
}
Modeli: MovieGenre
class MovieGenre extends AppModel {
public $belongsTo = array(
'Movie' => array(
'className' => 'Movie',
'foreignKey' => 'movie_id',
'conditions' => '',
'fields' => '',
'order' => ''
),
'Genre' => array(
'className' => 'Genre',
'foreignKey' => 'genre_id',
'conditions' => '',
'fields' => '',
'order' => ''
)
);
}
Modeliniz nerede? –
Modeli ekledim :) –