2015-02-17 2 views
0

Мой код в контроллер выглядит так:CakePHP полей выбранных таблиц

public function leftsidebar(){ 
     $this->layout=false; 
     $productlist = $this->Product->Category->find('all'); 
     pr($productlist); 
     $this->set(compact('productlist')); 
     $this->render('leftsidebar'); 
    } 

выводит в

Array 
(
    [0] => Array 
     (
      [Category] => Array 
       (
        [id] => 1 
        [name] => Cat New Name 
        [image] => Cat New Name_9547.jpg 
        [description] => Description heeeererer 
        [active] => 1 
        [created] => 2015-02-17 12:07:43 
       ) 

      [Product] => Array 
       (
        [0] => Array 
         (
          [id] => 2 
          [category_id] => 1 
          [productname] => CCTV products 
          [sortorder] => 0 
          [productimage] => CCTV products_4939.jpg 
          [description] => Some Description for product goes here 
          [created] => 2015-02-17 02:00:48 
          [modified] => 2015-02-17 02:00:48 
         ) 

        [1] => Array 
         (
          [id] => 3 
          [category_id] => 1 
          [productname] => Product Name 
          [sortorder] => 0 
          [productimage] => Cat Names _23749.jpg 
          [description] => Description 
          [created] => 0000-00-00 00:00:00 
          [modified] => 0000-00-00 00:00:00 
         ) 

       ) 

     ) 

    [1] => Array 
     (
      [Category] => Array 
       (
        [id] => 2 
        [name] => Name 
        [image] => Cat New Name_13850.jpg 
        [description] => Description 
        [active] => 0 
        [created] => 2015-02-17 12:18:18 
       ) 

      [Product] => Array 
       (
       ) 

     ) 

) 

Теперь из таблицы Product мне нужно только выбранные поля, как ид, category_id, PRODUCTNAME и из категории table only id и name, Итак, как я могу его достичь. Спасибо заранее

ответ

0

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

public function leftsidebar(){ 
     $this->layout=false; 
     $productlist = $this->Product->Category->find('all', array(
"fields" => array("Product.id", "Product.category_name","Product.name", "Category.id", "Category.name") 
)); 
     pr($productlist); 
     $this->set(compact('productlist')); 
     $this->render('leftsidebar'); 
    } 

Для отношения времени выполнения, пожалуйста, см. Поведение CAKEPHP.

0

Просто пройти 2-ой из параметров, чтобы найти метод:

$fields = array("Product.id", "Product.category_name","Product.name", "Category.id", "Category.name"); 
    $productlist = $this->Product->Category->find('all',$fields); 

И вести с обычным кодом.

0
$this->Product->Category->find('all',array(array("Product.id", "Product.category_name","Product.name", "Category.id", "Category.name");); 
+0

Guys ни один из вышеперечисленных работал для меня – Asim

2

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

 public function leftsidebar(){ 
      $this->layout=false; 
      $this->loadModel('Category'); 
      $productlist = $this->Product->Category->find('all', 
      'fields' => array('Product.id', 'Product.category_name','Product.name', 'Category.id', 'Category.name') 
      ); 
      pr($productlist); 
      $this->set(compact('productlist')); 
      $this->render('leftsidebar'); 
     } 
Смежные вопросы