CakePhp принадлежит к вопросу отношения - PullRequest
0 голосов
/ 17 января 2012

У меня есть 2 модели профилей и сообщений. Когда я пытаюсь получить все сообщения в своем контроллере, торт не возвращает никаких профилей в массиве результатов. В контроллере сообщений:

$this->Message->recursive=3;
$m=$this->Message->find('all');

Модель:

class Message extends AppModel {    
var $name = 'Message';
var $primaryKey = 'id';
var $useTable = 'messages';
var $belongsTo = array(
  'Profile' => array(
   'className' => 'Profile',
   'foreignKey' => 'author_id',
   'conditions' => '',
   'fields' => '',
       'order' => ''
  ));

И

 class Profile extends AppModel {   
    var $name = 'Profile';
    var $primaryKey = 'id';
    var $useTable = 'profiles';
    var $belongsTo = array(
  'Account' => array(
   'className' => 'Account',
   'foreignKey' => 'account_id',
   'conditions' => '',
   'fields' => '',
   'order' => ''
  ));
  var $hasMany = array(
      'Message' => array(
           'className' => 'Message',
           'foreignKey' => 'Author_id',
           'dependent' => false,
           'conditions' => '',
           'fields' => '',
           'order' => '',
           'limit' => '',
           'offset' => '',
           'exclusive' => '',
           'finderQuery' => '',
           'counterQuery' => ''
      ));

P.S. Я не могу ждать 7 часов для варианта ответа. В конце концов я нашел решение, мое имя файла модели сообщений было messageS.php, как только я переименовал его в message.php, получил все, что мне было нужно. Мне это кому-то помогает

Ответы [ 2 ]

0 голосов
/ 24 июня 2014

записать в файл модели Message.php:

var $ assignTo = array (

'Профиль' => массив (

'className' => 'Profile',

'foreignKey' => 'author_id',

'conditions' => '',

'fields' => '',

'order' => ''

)); * * 1 010


записать в файл модели Profile.php:

var $ hasMany = array (

'Сообщение' => массив (

   'className' => 'Message',

   'foreignKey' => 'Author_id',  // Hear you "Author_id" should change as "author_id"

   'dependent' => false,

   'conditions' => '',

   'fields' => '',

   'order' => '',

   'limit' => '',

   'offset' => '',

   'exclusive' => '',

   'finderQuery' => '',

   'counterQuery' => ''
* * Тысяча двадцать-одина)); * * тысяча двадцать-дв

Контроллер:

$ т = $ this-> Сообщение-> найти ( 'все');

Теперь все работает нормально ... Наслаждайтесь ..

0 голосов
/ 17 января 2012

Согласно вашему ответу (но также относящемуся к другим людям), если вы уверены, что ваши ассоциации правильны, следующий шаг - проверить ваши имена файлов, чтобы убедиться, что они соответствуют соглашениям (единственное число)модель).

Еще одно замечание: если вы используете рекурсив 3 (не знал, что он превысил 2, но, очевидно, так и есть), вам, вероятно, лучше использовать Containable Behavior в CakePHP.Даже использование рекурсии 2 обычно чрезмерно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...