Как написать правильный запрос в CakePHP 3.7, чтобы получить данные столбца и отобразить список элементов в раскрывающемся списке - PullRequest
0 голосов
/ 22 января 2019

Я пытаюсь получить список city_name (столбец) из моей таблицы Cities и отобразить этот список в раскрывающемся списке

Я пишу следующий код в методе моего контроллера

namespace App\Controller;

use App\Controller\AppController;


class PrimeUsersController extends AppController
{


    public function initialize()
    {
        parent::initialize();
        $this->viewBuilder()->setlayout('primewishsLayout');
        $this->loadModel("Cities");
        $this->loadModel("States");
        $this->loadModel("Users");

    }


    public function addnew()
    {
        // $this->autoRender=false;
        $this->set('title',"Add User/Company");
        $digits_needed=10;
        $random_number=''; // set up a blank string
        $count=0;
        while ( $count < $digits_needed ) 
        {
            $random_digit = mt_rand(0, 9);            
            $random_number .= $random_digit;
            $count++;
        }
        $this->set("rendomReg",$random_number);
            // $view=$this->States->find()->toArray();
            // print_r($view);
            // city list 
            $fieds = array('Cities.city_name');
            $city = $this->Cities->find()->select(['city_name'])->enableHydration(false)->toList();
            // print_r($city);die;
            $this->set(compact('city'));

    }

} 

и это мой выпадающий список, в котором я хочу показать свой список предметов в addnew.ctp

<div class="col-md-3 pl-1">
                      <div class="form-group">
                        <label>City:</label>
                        <?php 

echo  $this->Form->control('City',array(
    'options' => $city,
    'value'=>$option,
    'required'=>'required',
    'class'=>'form-control',
    'label'=>false,
    'default' => $option['select'] 
    ));
?>
 </div>
                    </div>

Я могу получить список, но когда я нажимаю на выпадающий список, список отображается так: - 1Канпур 2 Лакхнау 3 Дели

пожалуйста, помогите мне ..

Ответы [ 2 ]

0 голосов
/ 22 января 2019

Согласно Cakephp

CakePHP предоставляет простой в использовании метод для создания «списков» данных.Часто полезно генерировать ассоциативный массив данных из данных вашего приложения.Например, это очень полезно при создании элементов.

Поэтому, чтобы получить список городов, вы можете использовать list в запросе поиска.Это даст вам ассоциативный массив идентификатора и названия города из таблицы ваших городов.

PrimeUsersController.php

 $city = $this->Cities->find('list')->find('list', [
        'keyField' => 'id',    // specify column name that you used used as city id in cities table
        'valueField' => 'city_name' // specify column name that you used used as city name in cities table
    ])->toArray();

$this->set(compact('city'));

addnew.ctp

$this->Form->select(       
                        'city',
                        $city,
                        ['required'=>'required',
                        'class'=>'form-control',
                        'label'=>false,
                        'empty' => 'Select City']
               );

Cakephp -> Получение наборов данных и результатов -> Поиск пар ключ / значение

Надеюсь, это поможет!

0 голосов
/ 22 января 2019

Попробуйте что-то вроде этого:

               $this->Form->select(       
                        'city',
                        $city,
                        ['required'=>'required',
                        'class'=>'form-control',
                        'label'=>false,
                        'default' => ':Select:']
               );

Дополнительные инструкции: https://book.cakephp.org/3.0/en/views/helpers/form.html#common-options-for-specific-controls

...