2013-09-09 2 views
0

Я использую Cakephp 1.3, и у меня проблема с множественными отношениями. У меня 3 таблицы Библиотека, Пользователь, Адрес.Cakephp multiple принадлежит полям

Я использую рекурсивную на 2

UserModel:

var $belongsTo = array('address'=>array('className'=>'address','foreignKey'=>'users_id')); 

LibraryModel:

var $belongsTo = array('user' => array('className'=> 'user','foreignKey'=>'user_id')); 

function getUser($idBook) 
    { 
     $this->recursive = 2; 
     return $this->find('all', 
    array('conditions'=>array('library.book_id'=>$idBook), 
'fields'=>array('user.id','user.nick','address.town'))); 
    } 

Он работает только без полей Param, но я хочу выбрать только это три колонки. Пожалуйста, где моя ошибка?

ответ

0

Вы можете найти его проще использовать Containable вместо http://book.cakephp.org/1.3/en/The-Manual/Core-Behaviors/Containable.html я также рекомендую использовать ленивую модель плагин https://github.com/Phally/lazy_model

app_model.php

App::import('Lib', 'LazyModel.LazyModel'); 
class AppModel extends LazyModel { 
    var $actsAs = array('Containable'); 
    var $recursive = -1;  
} 

user.php

class User extends AppModel { 
    var $name = 'user'; 
    var $belongsTo = array(
     'Address' => array(
      'className' => 'Company', 
      'foreignKey' => 'users_id' 
     ) 
    ); 
} 

библиотека .php

class Library extends AppModel { 
    var $name = 'library'; 
    var $belongsTo = array(
     'User' => array(
      'className' => 'User', 
      'foreignKey' => 'user_id' 
     ) 
    ); 

    function getUser($idBook) 
    { 
     return $this->find('all', array(
      'conditions'=>array('library.book_id'=>$idBook), 
      'contain' => array(
       'user' => array(
        'address' => array(
         'fields' => array(...) 
        ), 
        'fields' => array(...) 
       ) 
      ), 
      'fields' => array(...) 
     ); 
    } 
} 
Смежные вопросы