2016-04-11 6 views
1

У меня есть сетка, которая показывает связанные продукты в Cakephp2, она работает отлично, но тот же самый продукт просматривается в сетке связанных продуктов, как я могу его исключить?Показать связанные продукты, исключить текущий продукт из сетки

Вот мои работы контроллера код:

public function view($id = null) { 
    if (!$this->Artwork->exists($id)) { 
     throw new NotFoundException(__('Invalid artwork')); 
    } 
    $options = array('conditions' => array(
     'Artwork.' . $this->Artwork->primaryKey => $id), 
     'recursive' => 0); 
    $artwork = $this->Artwork->find('first', $options); 
    $this->set('artwork', $artwork); 

    // related artworks 
    $status = 'Artwork.status'; 
    $id = 'Artwork.artist_id'; 
    $related = $this->Artwork->find('all', 
     array(
      'limit' => 4, 
      'conditions' => array(
      $status => 1, 
      $id => $artwork['Artwork']['artist_id']))); 

    $this->set('artworks', $related); 
} 

ответ

1

Вам необходимо исключить товар из родственных:

'Artwork.id !=' => $artwork['Artwork']['id'] 

Попробуйте это:

public function view($id = null) { 
if (!$this->Artwork->exists($id)) { 
    throw new NotFoundException(__('Invalid artwork')); 
} 
$options = array('conditions' => array(
    'Artwork.' . $this->Artwork->primaryKey => $id), 
    'recursive' => 0); 
$artwork = $this->Artwork->find('first', $options); 
$this->set('artwork', $artwork); 

// related artworks 
$status = 'Artwork.status'; 
$id = 'Artwork.artist_id'; 
$related = $this->Artwork->find('all', 
    array(
     'limit' => 4, 
     'conditions' => array(
     $status => 1, 
     $id => $artwork['Artwork']['artist_id'], 
     'Artwork.id !=' => $artwork['Artwork']['id'] 
))); 


$this->set('artworks', $related); 
} 
+1

Ты гений, спасибо –