найти по имени столбца cakePHP

Привет, я пытался понять, как получить данные из модели по имени поля. Я использую cakePHP, и мне нужно получить данные столбца из таблицы. Синтаксис

> "select name from permissions"

Поэтому я попытался найти на book.cakephp.org, поэтому я получил функцию поля, но это дает мне только первое значение, в то время как у меня есть более одного значения для этого.

я пытался сделать

$this->Model->find(array('fields'=>'Model.fieldName'));

но я понял, что сам синтаксис ущербен.

Может кто-нибудь сообщить мне, каков метод запроса на основе имени столбца.


person macha    schedule 15.10.2010    source источник


Ответы (6)


Вы не можете запросить на основе имени столбца, используя один из методов пирога. Вы должны использовать метод запроса.

Синтаксис: $this->Model->('Select columnname from table');

person taktak    schedule 15.10.2010

$this->Model->find(array('fields'=>'Model.fieldName'))

Вы забыли функцию array. Также:

$this->Model->find(array('fields'=>array('Model.fieldName')))

буду работать.

person webbiedave    schedule 15.10.2010
comment
Что ж, синтаксис, который я дал в вопросе, был неправильным, когда я это делаю, он добавляет бит where fields='Model.name' к исходному sql. Он не запрашивает на основе имени поля. - person macha; 15.10.2010

findAllBy найдет все записи по имени поля.

$this->Model->findAllBy<fieldName>(string $value, array $fields, array $order, int $limit, int $page, int $recursive);

Например:

$this->Permission->findAllByName('Some Name');

http://book.cakephp.org/2.0/en/models/retrieving-your-data.html#findallby

person Robert Love    schedule 15.05.2011

Нашел ... надеюсь, это поможет кому-то.

    $workshop_lists = ClassRegistry::init('Workshop')->find('all',array(
    'fields'=>array('user_id', 'title')
    ), 
     array(
       'conditions' => array('user_id' => $this->Auth->user('id')),
       'group' => 'Workshop.user_id',
        'order' => 'posted DESC',
    ));
person Invincible    schedule 01.02.2013

$this->Model->find('all',array('fields'=>array('Model.fieldName')))

это работает для меня каждый раз.

person sapewady    schedule 26.02.2011

Если я правильно понял, и вам нужно не только 1 значение, но и все значения в столбце «имя» из таблицы «разрешения». В этом случае вы можете использовать:

$this->Model->find('list',$params);  

(см. объяснение «найти» здесь)

для части '$ params' вы бы использовали:

$params=array('fields'=>array('name'));

или поместить все в одну строку:

$arrayOfNames= $this->Model->find('list',array('fields'=>array('name')));

Это даст вам массив «$arrayOfNames», ключ которого является «id» (первичный ключ) в таблице «разрешения», а значением которого является соответствующее имя в поле «имя» из той же таблицы. Это массив будет выглядеть примерно так: 'id'=>'name'

[23]=>'имя1'
[28]=>'имя2'
[29]=>'имя3'
............

очень похоже на то, что я думаю, вы хотите. Надеюсь, поможет.

person Hernanibus    schedule 19.02.2014