2010-10-15 3 views
4

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

> "select name from permissions" 

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

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

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

, но я понял, что сам синтаксис является ошибочным.

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

ответ

1

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

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

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

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

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

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

+0

Ну, синтаксис, который я дал в вопросе, был неправильным, когда я это делаю, он добавляет «где fields =« Model.name »бит к исходному sql. Это не запрос, основанный на имени поля. – macha

1

$ this-> Модель-> найти ('все', массив ('полей' => Array ('Model.fieldName')))

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

4

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

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

Для eaxample:

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

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

+0

findAllByX() будет предпочтительным способом «магического метода». –

2

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

$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', 
    )); 
0

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

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

(см объяснение 'найти' here)

для части знака '$ Params' вы будете использовать:

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

или положить все в одна строка:

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

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

[23] => 'name1'
[28] => 'name2'
[29] => 'name3'
............

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

Смежные вопросы