У меня есть 4 таблицы, связанные друг с другомCakePHP 2.5 комплекс находка фильтрации по Containable ключа
Talent стол
+--------------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------------+------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| created | datetime | YES | | NULL | |
| user_id | int(10) unsigned | NO | | NULL | |
| firstname | varchar(128) | NO | | NULL | |
| lastname | varchar(128) | NO | | NULL | |
| phone_num | varchar(32) | NO | | NULL | |
+--------------------+------------------+------+-----+---------+----------------+
эта таблица будет содержать строки, такие как
+----+-----------+------------+
| id | firstname | lastname |
+----+-----------+------------+
| 1 | barney | stinson |
| 2 | Ted | Mosby |
+----+-----------+------------+
TalentCategory таблицы
+----------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------------+------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| created | datetime | NO | | NULL | |
| talent_id | int(10) unsigned | NO | | NULL | |
| talent_name_id | int(11) | NO | | NULL | |
| is_active | tinyint(1) | NO | | 1 | |
+----------------+------------------+------+-----+---------+----------------+
TalentName стол
+--------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| created | date | NO | | NULL | |
| name | varchar(128) | NO | | NULL | |
| slug | varchar(255) | NO | | NULL | |
| talent_count | int(11) | NO | | NULL | |
+--------------+------------------+------+-----+---------+----------------+
эта таблица будет содержать строки, такие как
+----+-------------------+-----------------+
| id | name | slug |
+----+-------------------+-----------------+
| 1 | actor/actress | actor-actress |
| 2 | dancer | dancer |
| 3 | model | model |
| 4 | singer/musician | singer-musician |
+----+-------------------+-----------------+
и TalentMedia таблице
+--------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| created | datetime | NO | | NULL | |
| talent_id | int(10) unsigned | NO | | NULL | |
| media_id | int(10) unsigned | NO | | NULL | |
| is_cover | tinyint(1) | NO | | 0 | |
| is_avatar | tinyint(1) | NO | | 0 | |
| like_count | int(11) | NO | | 0 | |
| view_count | int(11) | NO | | 0 | |
| is_published | tinyint(1) | NO | | 0 | |
| is_deleted | tinyint(1) | NO | | 0 | |
| is_approved | tinyint(1) | NO | | 0 | |
| is_suspended | tinyint(1) | NO | | 0 | |
+--------------+------------------+------+-----+---------+----------------+
Талант hasMany
TalentCategory belongsTo
TalentName
Талант hasMany
TalentMedia
я пытаюсь достичь
SELECT
Talent.id,
Talent.firstname,
Talent.lastname,
TalentCategory.id,
TalentCategory.talent_id,
TalentCategory.talent_name_id,
TalentName.name,
TalentName.id,
TalentMedia.talent_id,
TalentMedia.media_id,
TalentMedia.is_suspended,
TalentMedia.is_avatar,
TalentMedia.is_cover
FROM talents AS Talent
JOIN talent_talents AS TalentCategory ON TalentCategory.talent_id = Talent.id
JOIN talent_names AS TalentName ON TalentName.id = TalentCategory.talent_name_id
JOIN talent_medias AS TalentMedia ON TalentMedia.talent_id = Talent.id
WHERE TalentName.id = 4 AND TalentMedia.is_suspended != 1 AND TalentMedia.is_cover !=1 AND TalentMedia.is_avatar = 1
GROUP BY Talent.id
или
select all talents which is a singer/musician that avatar is not suspended
вот SqlFiddle описания желаемого выхода
из моего контроллера, так что я могу реализовать его в моих настройках Paginator , я пробовал все без везения.
Я пробовал custom find types или custom query pagination, но я не совсем понимаю документацию.
пожалуйста, помогите мне о том, как достичь этого
вашей структуры БД выглядит немного прочь. Если у Таланта есть много TalentCategory, то вы должны получать Талант и TalentCategory отдельно? –
@AngelS.Морено, я не совсем понимаю ваш вопрос, у таланта может быть много talent_categories (Барни Стинсон - актер, певец и танцор), вот почему я должен его сопоставлять. i обновил мой, надеюсь, что это поможет объяснить – littlechad
Если вам нравится, подумайте о следующем простом двухэтапном курсе действий: 1. Если вы еще этого не сделали (вы этого не сделали), укажите * надлежащие * DDL (и/или sqlfiddle), чтобы мы могли легче воспроизвести проблему. 2. Если вы еще этого не сделали, укажите желаемый набор результатов, который соответствует информации, предоставленной на шаге 1. – Strawberry