Я пытаюсь сделать запрос на модели под названием uploads, где я ищу все загрузки, у которых есть данный тег. Я использую плагин CakeDC Tags, и я работаю из этого урока, http://mark-story.com/posts/view/using-bindmodel-to-get-to-deep-relations. Я пытаюсь преодолеть тот факт, что плагин предоставляет два запроса (которые не могут быть найдены) по умолчанию.Unbind не может найти модель, которая явно существует
Итак, я пытаюсь сделать присоединиться с помощью функции bindModel:
$this->Upload->Behaviors->load('Containable');
$this->Upload->unbindModel(array(
'hasAndBelongsToMany' => array('Tag')
));
$this->Upload->bindModel(array(
'hasOne' => array(
'Tagged' => array(
'className' => 'Tags.Tagged',
'foreignKey' => false,
'conditions' => array('Tagged.foreign_key = Upload.id')
),
'Tag' => array(
'foreignKey' => false,
'conditions' => array('Tag.id = Tagged.tag_id')
)
)
));
$tag = $this->Upload->find('all', array(
'contain' => array('Tag'),
'conditions' => array('Tag.name' => $tagname)
));
Однако: SQLSTATE [42S22]: Column не найдено: 1054 Неизвестный столбец 'Tagged.tag_id' в 'по статье'
Я считаю, что это может быть связано с тем, что Tagged - это только таблица соединений, а не подходящая модель. Как я могу заставить таблицу присоединиться, поскольку мне это нужно?
SQL-дамп: SQL запросов:
SELECT
Upload.id,
Upload.name,
Upload.description,
Upload.created,
Upload.modified,
Upload.filetype,
Upload.numberofviews,
Upload.numberofdownloads,
Upload.model_dir,
Upload.model,
Upload.owner,
Upload.license,
Upload.category,
Upload.default_picture,
Upload.soft_delete,
Tag.id,
Tag.identifier,
Tag.name,
Tag.keyname,
Tag.weight,
Tag.created,
Tag.modified
FROM
database.uploads AS Upload
LEFT JOIN
database.tags AS Tag ON (Tag.id = Tagged.tag_id)
WHERE
1 = 1
Не могли бы вы отметить это как принятый ответ? – Nunser
Несомненно. Чувствовал себя немного странно, когда я отвечу на правильный ответ. Как глупо со мной. – baordog
Если это работает, вы всегда должны отмечать его как принятое, чтобы другие могли попробовать решение, если у них есть такая же проблема. Если приходит еще один ответ, что вы чувствуете себя лучше, чем ваш (объясните больше проблемы или поработайте магически), вы всегда можете не принимать ваш ответ и проверять другое. – Nunser