найти по названию колонки cakePHP - PullRequest
4 голосов
/ 15 октября 2010

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

> "select name from permissions"

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

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

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

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

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

Ответы [ 6 ]

4 голосов
/ 15 мая 2011

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

4 голосов
/ 15 октября 2010
$this->Model->find(array('fields'=>'Model.fieldName'))

Вы забыли функцию array. Кроме того:

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

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

2 голосов
/ 01 февраля 2013

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

    $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',
    ));
1 голос
/ 26 февраля 2011

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

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

1 голос
/ 15 октября 2010

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

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

0 голосов
/ 19 февраля 2014

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

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

(см. Объяснение 'find' здесь )

для части '$ params', которую вы используете:

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

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

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

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

[23] => 'имя1'
[28] => 'name2'
[29] => 'name3'
............

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

...