Cakephp 3.0 взял данные

Привет, я новичок в cakephp. Однако я пытаюсь создать свой блог с помощью версии cakephp 3.0, которая является стабильной. Я застрял, не принял базу данных, покажи view.ctp

Контроллер => "ListjobsController.php"

<?php
namespace App\Controller;
 class ListjobsController extends AppController{
    public function jobdetail(){
        $jobdetail = $this->Listjobs->find('all');
        $this->set( compact('jobdetail'));
    }
}

Модель => Таблица => "ListjobsTable.php"

<?php
namespace App\Model\Table;
use Cake\ORM\Table;

class ListjobsTable extends Table{
    public function initialize(array $config){
        $this->table('listjobs');
        $this->displayField('title');
        $this->primaryKey('id');
         $this->belongsToMany('Users',[
            'foreignKey' => 'user_id'
        ]);
    }
}

Шаблон => Список заданий => "jobdetail.ctp"

<p><?= pr($jobdetail);exit; ?></p>

не похоже, что текущая информация базы данных:

Cake\ORM\Query Object


(
[sql] => SELECT Listjobs.id AS `Listjobs__id`, Listjobs.user_id AS `Listjobs__user_id`, Listjobs.type_id AS `Listjobs__type_id`, Listjobs.cate_id AS `Listjobs__cate_id`, Listjobs.title AS `Listjobs__title`, Listjobs.location AS `Listjobs__location`, Listjobs.description AS `Listjobs__description`, Listjobs.skillsrequired AS `Listjobs__skillsrequired`, Listjobs.companyname AS `Listjobs__companyname`, Listjobs.website AS `Listjobs__website`, Listjobs.email AS `Listjobs__email`, Listjobs.password AS `Listjobs__password`, Listjobs.created AS `Listjobs__created`, Listjobs.modified AS `Listjobs__modified` FROM listjobs Listjobs
[params] => Array
    (
    )

[defaultTypes] => Array
    (
        [Listjobs.id] => integer
        [id] => integer
        [Listjobs.user_id] => integer
        [user_id] => integer
        [Listjobs.type_id] => integer
        [type_id] => integer
        [Listjobs.cate_id] => integer
        [cate_id] => integer
        [Listjobs.title] => string
        [title] => string
        [Listjobs.location] => string
        [location] => string
        [Listjobs.description] => text
        [description] => text
        [Listjobs.skillsrequired] => text
        [skillsrequired] => text
        [Listjobs.companyname] => string
        [companyname] => string
        [Listjobs.website] => string
        [website] => string
        [Listjobs.email] => string
        [email] => string
        [Listjobs.password] => string
        [password] => string
        [Listjobs.created] => datetime
        [created] => datetime
        [Listjobs.modified] => datetime
        [modified] => datetime
    )

[decorators] => 0
[executed] => 
[hydrate] => 1
[buffered] => 1
[formatters] => 0
[mapReducers] => 0
[contain] => Array
    (
    )

[matching] => Array
    (
    )

[extraOptions] => Array
    (
    )

[repository] => App\Model\Table\ListjobsTable Object
    (
        [registryAlias] => Listjobs
        [table] => listjobs
        [alias] => Listjobs
        [entityClass] => \Cake\ORM\Entity
        [associations] => Array
            (
                [0] => users
            )

        [behaviors] => Array
            (
            )

        [defaultConnection] => default
        [connectionName] => default
    )

)

Не могу понять, почему данные в базе данных не отображаются. надеюсь вы мне поможете!!!


person Sanji    schedule 24.03.2015    source источник
comment
Вы создали действие проверки в своем ListjobsTable? Если да, то выложите сюда   -  person AKKAweb    schedule 24.03.2015
comment
спасибо @AKKA-Web. Я нашел это. это потому, что я печатаю объект, а не массив, попробуйте это в контроллере $jobdetail = $this-›Listjobs-›find('all'); $results = $jobdetail ->all(); $data = $results-›toArray();   -  person Sanji    schedule 24.03.2015
comment
Для справки: book.cakephp.org/3.0/en/ orm/query-builder.html | book.cakephp.org/3.0/en/orm/   -  person ndm    schedule 24.03.2015


Ответы (3)


Метод find() всегда возвращает объект Query, поэтому вы не можете видеть результаты, а только SQL, который будет выполнен. Если вы только начинаете с пирога 3, есть пара хороших способов увидеть, каковы результаты запроса:

debug($this->Table->find('all')->toArray());

Это даст вам массив сущностей, которые были извлечены из базы данных, вывод может все еще быть немного запутанным для вас, если вы не привыкли к идее сущностей. Итак, вот еще один трюк:

// In bootstrap.php
function dj($data)
{
     debug(json_encode($data, JSON_PRETTY_PRINT));
}

А потом:

dj($this->Table->find('all'));
person José Lorenzo Rodríguez    schedule 24.03.2015

сделать изменение в контроллере

namespace App\Controller;

class ListjobsController extends AppController{

  public function jobdetail(){

      $jobdetail = $this->Listjobs->find('all');
      $this->set('listjobs', $jobdetail);
      $this->set('_serialize', ['listjobs']);
  }
}  

теперь вы можете отображать данные при просмотре

person Naresh Dudhat    schedule 28.05.2015

Напишите в файле appController.php:

public function initialize()
{
    $this->loadModel('Listjobs');
}

Это должно решить вашу проблему.

person Soumen Pandit    schedule 23.11.2015