2012-02-13 7 views
0

で検索操作で使用されていません「ユーザ」を使用するコントローラではCakePHPの2.0 virtualFieldsは、私は、CakePHP 2.0を使用していますが、私はこの 'virtualFields' がモデルを持っているオプション

$users = $this->User->find('all'); 

仮想フィールドpathが設定されています。

私も「ユーザー」オプションで

$options['fields'] = array(
    'DISTINCT User.*' 
); 
$options['joins'] = array(
    array(
     'table' => 'courses', 
     'type' => 'inner', 
     'conditions' => array(
      'User.id = courses.user_id' 
     ) 
    ), 
    array(
     'table' => 'times', 
     'type' => 'inner', 
     'conditions' => array(
      'courses.id = times.course_id' 
     ) 
    ) 
); 
$options['conditions'] = array(
    'times.amount > ' => 0 
); 

$users = $this->User->find('all', $options); 

を使用して、私のコントローラでこれを使用する場合はpathフィールドが設定されていない、もちろん、SQLクエリは「CONCAT_WSを持っていないようです( '/'、dirname、basename)」フィールドが含まれています。これは、オプションなしでfindの操作を行う場合に含まれます。

オプションを使用すると、仮想フィールドが自動的に含まれるようにすることはできますか?もちろん、fieldsオプションでCONCATを書くことはできますが、特にそれを変更すると、それほどうれしくはありません。

よろしくお願いいたします。

答えて

1

別名ではなくグループを使用し、フィールドオプションを完全に削除します。

$options['group'] = array(
    'User.*' 
); 
$options['joins'] = array(
    array(
     'table' => 'courses', 
     'type' => 'inner', 
     'conditions' => array(
      'User.id = courses.user_id' 
     ) 
    ), 
    array(
     'table' => 'times', 
     'type' => 'inner', 
     'conditions' => array(
      'courses.id = times.course_id' 
     ) 
    ) 
); 
$options['conditions'] = array(
    'times.amount > ' => 0 
); 

$users = $this->User->find('all', $options); 
関連する問題