CakePHP имеет и принадлежит присоединиться не работает

У меня есть две таблицы:

  • пользователи содержит (идентификатор, имя, адрес электронной почты) id является первичным ключом.

  • users_details содержит (user_id, адрес, город, почтовый индекс) user_id это внешний ключ к пользовательской таблице.

users.id=users_details.user_id,

Я написал такую ​​модель в User.php

class User extends AppModel {

public $name = 'User';
public $displayField = 'name';
public $primaryKey = 'id';
var $belongsTo = 'UsersDetail';
public $hasone = array(
'UsersDetail' => array(
'className' => 'UsersDetail',
'conditions' => '',
'fields' => '',
'foreignKey' => 'id',
'order' => '',
'dependent' => true
)
);
}

Я написал модель пользователей UsersDetail.php

class UsersDetail extends AppModel {

public $name = 'UsersDetail';
public $displayField = 'name';

public $belongsTo = array( 'User' =>
array( 'className' => 'User','foreignKey' => 'user_id') );

public $hasone = array(
'User' => array(
'className' => 'User',
'conditions' => '',
'fields' => '',
'foreignKey' => 'id',
'order' => '',
'dependent' => true
));
}

Я хочу получить данные из таблицы, используя соединение с условием. users.id=users_details.user_id,

1

Решение

Вы объявили две связи для каждой ассоциации моделей, когда у вас должна быть только одна связь в каждом направлении.

Вот так:
В пользовательской детали модель:

public $hasMany = array(
'User' => array(
'className' => 'User',
'foreignKey' => 'user_id'

)
);

И, следовательно, в пользовательской модели:

public $belongsTo = array(
'UserDetail' => array(
'className' => 'UserDetail',
'foreignKey' => 'user_id',
'conditions' => '',
'fields' => '',
'order' => ''
)
);

Проверьте документация Больше подробностей.

0

Другие решения

  • пользователь has (id, name, email) id является первичным ключом.
  • users_details имеет (user_id, address, city, postcode) user_id — это внешний ключ к таблице пользователя. Средства.

Укажите, чтобы запомнить:

  • отношение один к одномуhasOneтаблица пользователей имеет один users_detail.

  • принадлежать — А таблица userdetails принадлежит пользователь Таблица.

Итак, связь между двумя таблицами hasone и ownsto.

найдите правильный код ниже.

Модель пользователя:

public $hasOne = array('UsersDetail' => array(
'className' => 'UsersDetail',
'foreignKey' => 'user_id')
);

ПользователиДетальная модель

public $belongsTo = array('User' => array(
'className' => 'Users',
'foreignKey' => 'id',
'conditions' => '',
'fields' => '',
'order' => '')
);

которые обеспечивают соединение точно. Вы можете добавить условия, порядок в коллекциях.

Выходной запрос

SELECT `User`.`id`, `User`.`first_name`, `User`.`last_name`, `User`.`email`, `User`.`mobile`, `User`.`pswd`, `UsersDetail`.`user_id`, `UsersDetail`.`address`, `UsersDetail`.`city`, `UsersDetail`.`state`, `UsersDetail`.`postcode`, `UsersDetail`.`dob`, `UsersDetail`.`photo` FROM `cakedemo`.`users` AS `User` LEFT JOIN `cakedemo`.`users_details` AS `UsersDetail` ON (`UsersDetail`.`user_id` = `User`.`id`) WHERE 1 = 1

Спасибо,

0

По вопросам рекламы [email protected]