首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >自定义查询cakephp3

自定义查询cakephp3
EN

Stack Overflow用户
提问于 2016-11-07 17:21:31
回答 1查看 161关注 0票数 0

我试图创建一个自定义查找,但我仍然有一个错误。

控制器代码

代码语言:javascript
运行
复制
class AnunciosController extends AppController
{

public function listaServicos($id = null)
{
    $anuncios = $this->loadModel('Anuncios')->find('ByService', ['service_id' => $id]);

    die(print_r($anuncios));

    //$anuncios = $this->paginate($this->Anuncios);
    //$this->set(compact('anuncios'));
    //$this->set('_serialize', ['anuncios']);
}
}

tableModel中的代码:

代码语言:javascript
运行
复制
        class AnunciosTable extends Table
    {

 public function findByService(\Cake\ORM\Query $query, array $options)
        {
            print_r($options);
            $query = $this->find()
                ->select(['id','user_prof_id'])
                ->where(['service_id'=>$options['service_id']]);
            $return = $query->execute();

            return $return;
        }
}

运行后,返回的是以下错误:

数组( service_id => 7)

代码语言:javascript
运行
复制
Cake\Database\Statement\CallbackStatement Object ( [_callback:protected] => Cake\Database\FieldTypeConverter Object ( [_typeMap:protected] => Array ( [Anuncios__id] => Cake\Database\Type\IntegerType Object ( [_name:protected] => integer ) [Anuncios__user_prof_id] => Cake\Database\Type\IntegerType Object ( [_name:protected] => integer ) ) [_driver:protected] => Cake\Database\Driver\Mysql Object ( [connected] => 1 ) ) [_statement:protected] => Cake\Database\Log\LoggingStatement Object ( [_logger:protected] => DebugKit\Database\Log\DebugLog Object ( [_queries:protected] => Array ( [0] => Array ( [query] => SELECT Facs.id AS `Facs__id`, Facs.name AS `Facs__name`, Facs.description AS `Facs__description`, Facs.created AS `Facs__created`, Facs.modified AS `Facs__modified` FROM facs Facs [took] => 2 [rows] => 8 ) [1] => Array ( [query] => SELECT Servicos.id AS `Servicos__id`, Servicos.category_id AS `Servicos__category_id`, Servicos.name AS `Servicos__name`, Servicos.created AS `Servicos__created`, Servicos.modified AS `Servicos__modified` FROM servicos Servicos [took] => 1 [rows] => 53 ) [2] => Array ( [query] => SELECT Anuncios.id AS `Anuncios__id`, Anuncios.user_prof_id AS `Anuncios__user_prof_id` FROM anuncios Anuncios WHERE service_id = 7 [took] => 1 [rows] => 0 ) ) [_logger:protected] => [_connectionName:protected] => default [_totalTime:protected] => 4 [_totalRows:protected] => 61 ) [_compiledParams:protected] => Array ( [c0] => 7 ) [_statement:protected] => Cake\Database\Statement\MysqlStatement Object ( [_statement:protected] => PDOStatement Object ( [queryString] => SELECT Anuncios.id AS `Anuncios__id`, Anuncios.user_prof_id AS `Anuncios__user_prof_id` FROM anuncios Anuncios WHERE service_id = :c0 ) [_driver:protected] => Cake\Database\Driver\Mysql Object ( [connected] => 1 ) [_hasExecuted:protected] => [_bufferResults:protected] => 1 ) [_driver:protected] => Cake\Database\Driver\Mysql Object ( [connected] => 1 ) [_hasExecuted:protected] => 1 ) [_driver:protected] => Cake\Database\Driver\Mysql Object ( [connected] => 1 ) [_hasExecuted:protected] => ) 1

有人能帮我吗?我做错什么了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-07 17:30:35

你使用loadModel()不正确。而不是:

代码语言:javascript
运行
复制
$anuncios = $this->loadModel('Anuncios')->find('ByService', ['service_id' => $id]);

你应该做的是:

代码语言:javascript
运行
复制
$this->loadModel('Anuncios');
$anuncios = $this->Anuncios->find('byService', ['service_id' => $id]);

loadModel()将模型附加到当前控制器(与CakePHP 2中相同)。您还需要将您的自定义查找器称为byService (小写'b'),而不是ByService

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40470914

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档