#php #cakephp
#php #cakephp
Вопрос:
Мне нужна ассоциация, в которой у терапевтов много детей и наоборот.
У меня есть 3 таблицы:
терапевты дети children_therapists
Вы можете увидеть связь ниже:
Therapist.php
public $hasAndBelongsToMany = array('Child' =>
array(
'className' => 'Children',
'joinTable' => 'children_therapists',
'foreignKey' => 'therapist_id',
'associationForeignKey' => 'child_id',
'unique' => true,
'conditions' => '',
'fields' => '',
'order' => 'Child.last_name',
'limit' => '',
'offset' => '',
'finderQuery' => '',
'with' => ''
)
);
В Child.php модель, я попробовал этот код:
public $useTable = 'children';
но это не сработало.
Когда я кодирую против нее, я получаю следующую ошибку:
Отсутствует таблица базы данных
Ошибка: дочерние таблицы для дочернего элемента модели не были найдены в источнике данных по умолчанию.
Любая помощь приветствуется.
Спасибо, Грег
Комментарии:
1. Проблема заключается в дочерней модели , а не в дочерней модели. Торт ищет стол для детей (условно бы так и назвали
childrens
). Вам нужно установить$useTable = 'children';
внутри дочерней модели.2. В качестве альтернативы, если дочерние элементы на самом деле не являются моделью, вам необходимо изменить
className => Children
ассоциацию на дочернюю.
Ответ №1:
Дочерняя модель не используется
Потому что код в вопросе не ссылается на него.
public $hasAndBelongsToMany = array(
'Child' => array(
'className' => 'Children',
// ^ Supposed to be a model name
Он ссылается на Children
модель, которая не существует.
Чтобы выделить значение ключа массива и ключей className, сравните с:
class User extends AppModel {
public $hasAndBelongsToMany = array(
'Friend' => array(
// ^ Whatever you want
'className' => 'Child',
// ^ A model name
Простое исправление
Чтобы исправить заданный вопрос, просто замените
'className' => 'Children'
с
'className' => 'Child'
Комментарии:
1. Спасибо за помощь. Когда я меняю имя класса на «Дочерний», я получаю следующую ошибку: Ошибка с фатальной ошибкой: вызов функции-члена schema () в не-объектном файле: /var/www/lib/Cake/Model/Model.php Строка: 3575
2. Тогда есть больше ошибок, чем в вопросе =) — посмотрите на строку кода в вашем приложении и определите, к чему оно пытается получить доступ (т. Е. К Чему
$assoc
) и почему это не объект модели.