天道酬勤,学无止境

CakePHP find not returning correctly - missing model name

After performing a find on a model I would expect the result to be of the format

Array
(
    [0] => Array
        (
            [ModelName] => Array
                (
                    [id] => 83
                    [field1] => value1
                    [field2] => value2
                    [field3] => value3
                )    
        )
)

However, what I appear to be getting is

Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [id] => 83
                    [field1] => value1
                    [field2] => value2
                    [field3] => value3
                )

        )
)

Note the missing model name.

I've only been getting this problem since migrating across to what appears to be a very poorly configured VPS that I now have full control over.

My problem is, I can't think of anything that would cause this problem. Any ideas greatly appreciated.

评论

Turns out to be very similar to this.

Again the problem was with an outdated pdo_mysql version.

This can be checked by running

strings -f pdo_mysql.so | grep ': table'

If there are no results then pdo_mysql is out of date most likely due to an installation such as

pecl install pdo_mysql

My fix was an easy one

yum install php53-mysql

I hope that this helps someone.

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • CakePHP 2.0 : 数据库连接“Mysql”丢失或无法创建(CakePHP 2.0 : Database connection “Mysql” is missing, or could not be created)
    问题 在安装 CakePHP 2.0 之后(修改过,我说我在全新安装 cakephp 2.0 时遇到了同样的问题)我发现自己遇到了一个我无法解决的错误。 配置: 服务器:debian weezy 7 用户:测试 结构:/wwwjail/siteroot/test/htdocs/[app/...] nginx配置 cat /etc/nginx/sites-available/test server { listen IP:80 default; server_name domain.fr; access_log /var/log/nginx/test.access.log; error_log /var/log/nginx/test.error.log; autoindex off; index index.php index.html; root /wwwjail/siteroot/test/htdocs/; location ~ \.php$ { try_files $uri =404; fastcgi_intercept_errors on; fastcgi_pass unix:/wwwjail/siteroot/test/php-fpm.sock; include /etc/nginx/fastcgi_params; fastcgi_param SCRIPT_FILENAME
  • CakePHP bake 错误:数据库连接“Mysql”丢失,或无法创建(CakePHP bake Error: Database connection “Mysql” is missing, or could not be created)
    问题 我已经检查了关于我的问题的其他问题和答案,似乎没有任何帮助解决它。 我正在使用安装了灯的 vagrant percise64(ubuntu 服务器 12.04)。 在我的主机(桌面)上,我的最终项目目录包含提取的 cakePHP 2.3.5 版。 我已经设置了所有需要的 cakePHP,并且在 cakePHP 的生成页面上显示“Cake 能够连接到数据库”。 当我尝试烘焙一个新的模型/控制器或全部时,我收到以下错误: Welcome to CakePHP v2.3.5 Console --------------------------------------------------------------- App : app Path: /home/shahar/development/myfinalproject/app/ --------------------------------------------------------------- Interactive Bake Shell --------------------------------------------------------------- [D]atabase Configuration [M]odel [V]iew [C]ontroller [P]roject [F]ixture [T
  • CakePHP 扩展模型不继承属性(CakePHP extended model not inheriting attributes)
    问题 如果这最终成为 PHP 新手的误解,我深表歉意,但无论如何,我有以下Vip.php文件: <?php class Vip extends AppModel { public $useTable = 'vips'; public $hasOne = 'VipCredential'; public $belongsTo = array('User', 'MasterExhibitor'); public $validate = array(); } class InviteVipForm extends Vip { } class AccreditVipForm extends Vip { } 因此, InviteVipForm和AccreditVipForm类都应该从其父类继承每个模型属性,对吗? 这不会发生。 我在控制器中加载InviteVipForm并打印。 一切都是空的或设置为默认值(例如, useTable设置为invite_vip_forms ,这当然是一个不存在的表)。 AppModel Object ( [useDbConfig] => default [useTable] => invite_vip_forms [id] => [data] => Array ( ) [schemaName] => [table] => invite_vip_forms
  • CakePHP find 返回缺少字段的结果(CakePHP find returns results with missing fields)
    问题 我需要获取我的User信息以及何时致电 $this->User->find('first', array('conditions' => array('User.id' => $user_id))); 结果只包含一些字段。 我目前已经更新了数据库架构。 在开发服务器上它运行良好并返回所有字段,但在生产服务器上缺少这些新字段。 这些服务器具有完全相同的配置。 我已经尝试删除app/tmp/cache/models内容,并且我正在使用File引擎进行缓存。 schema.php文件是最新的, app/tmp/cache/models中文件的内容表明这些字段存在,但我无法在生产服务器上检索它们。 唯一的区别可能是数据库和调试级别。 我试过复制数据库并将其与开发服务器一起使用,效果很好。 我显然无法在生产服务器上将 debug 设置为 2。 你们中有人遇到过类似的行为吗? PS 我正在使用 Cake 2.3.3 回答1 答案其实很简单。 我不仅要删除app/tmp/models的内容,还要删除app/tmp/persistent的内容。 回答2 我的回答与@Elwhis 的略有不同。 我在Cake 2.4.5 上。 对我来说,没有app/tmp/models目录或app/tmp/persistent 。 models和persistent都在app/tmp/cache 。 就像
  • CakePHP 2.0 : Database connection “Mysql” is missing, or could not be created
    following the installation of CakePHP 2.0 (modified, I said that I get the same problem on a clean install of cakephp 2.0) I found myself facing an error I have not been able to solve. configuration: server : debian weezy 7 user : test structure : /wwwjail/siteroot/test/htdocs/[app/...] nginx configuration cat /etc/nginx/sites-available/test server { listen IP:80 default; server_name domain.fr; access_log /var/log/nginx/test.access.log; error_log /var/log/nginx/test.error.log; autoindex off; index index.php index.html; root /wwwjail/siteroot/test/htdocs/; location ~ \.php$ { try_files $uri
  • cakephp new field not saving
    How to you extend a cakePHP project so it can use a new field in the database? I just given a CakePHP Project that I am trying to extend the model to include a new field. I The original Developer is no longer available, and I haven't worked with CakePHP previously. The problem is that all of the other fields are being saved correctly, but the new field is being saved as an empty string. The database has been extended to include the new field: class_time varchar(30) I extended the original view to support the new field <?=$form->input('release', array('type' => 'radio', 'legend' => false, 'div'
  • CakePHP数据库连接“ Mysql”丢失,或无法创建(CakePHP Database connection “Mysql” is missing, or could not be created)
    问题 关于此还有其他几篇文章,但是似乎没有答案对我有用。 当我导航到本地计算机上的CakePHP页面时,出现一个错误: Cake无法连接到数据库。 数据库连接“ Mysql”丢失,或无法创建。 当我在home.ctp中运行此有用的代码时,得到以下响应: 错误!:SQLSTATE [42000] [1049]未知数据库“测试” 但是,我的Users/Ben/Sites/myapp/app/Config/database.php看起来像这样(我将MAMP设置为在Users / Ben / Sites中查找文档根目录): <?php class DATABASE_CONFIG { public $default = array( 'datasource' => 'Database/Mysql', 'persistent' => false, 'host' => 'localhost', 'login' => 'Ben', 'password' => 'mypass', 'database' => 'CV', ); } 我用密码mypass创建了一个名为Ben的mysql用户,并在该用户下创建了一个名为CV的数据库。 而且,我找不到任何地方提到test数据库。 帮助? 回答1 尝试添加套接字: 'unix_socket' => '/Applications/MAMP/tmp/mysql
  • 使用 CakePHP 和河豚更改密码(Changing password with CakePHP and blowfish)
    问题 我正在尝试设置一个表单以允许用户使用 CakePHP 2.3 更改他们的密码。 使用的算法是河豚。 我有以下三个字段: <?php echo $this->Form->input('old_password', array('type' => 'password', 'autocomplete' => 'off')); ?> <?php echo $this->Form->input('new_password', array('type' => 'password', 'autocomplete' => 'off')); ?> <?php echo $this->Form->input('new_password_confirm', array('type' => 'password', 'autocomplete' => 'off', 'label' => 'Confirm Password')); ?> 这是我尝试验证他们正确输入旧密码的代码: $hash = Security::hash($this->request->data['User']['old_password'], 'blowfish'); $correct = $this->User->find('first', array( 'conditions' => array( 'User.id' =>
  • CakePHP 2.x:Model :: afterFind()上的$ primary标志实际上有用吗?(CakePHP 2.x: Is the $primary flag on Model::afterFind() actually useful?)
    问题 CakePHP的Model::afterFind()回调类似于: afterFind(array $results, boolean $primary = false) 根据文档: $primary参数指示当前模型是否是查询所基于的模型,或者是否以关联形式查询此模型。 如果将模型作为关联进行查询,则$results的格式可能会不同。 它们可以不同,但是实验表明它们并不总是不同。 据我所知, $primary参数实际上并没有那么有用。 如果将其设置为false ,则可能会或可能不会获得扁平化的数据结构,因此您可能会也可能不会收到可怕的“无法将字符串偏移量用作数组”错误消息。 尽管我还没有尝试过,但是基于文档,我的想法是完全忽略$primary标志,而只是检查数据: public function afterFind($results, $primary = false) { if (array_key_exists(0, $results) { // operate on $results[0]['User']['fieldname'] } else { // operate on $results['fieldname'] } return $results; } 这有点骇人听闻,但我不喜欢它,但它似乎比$primary有用。 明确地说,我的问题是:
  • 在 Cakephp 中烘焙代码时如何定义关联(How associations get defined when code is baked in Cakephp)
    问题 我试图在控制台中烘焙博客教程。 我创建了一个名为 posts 的表并烘焙了代码,并且所有 MVC 文件都已正确创建。 然后我创建了另一个名为 comments 的表,我再次烘焙了代码,但烘焙没有定义任何关系,并且将评论创建为与博客分开的部分。 我想定义有很多关系意味着博客有很多评论。 它将如何通过控制台定义? 请给点意见? 还是我运行的烘焙不正确? 非常感谢。 回答1 您需要重新烘焙您的帖子模型才能正确获取 回答2 您可以重新烘焙您的模型,这将解决它。 但最终你将无法做到。 在理想情况下,当您烘烤时,所有桌子都在那里。 但通常情况会在以后发生变化。 因此,您也应该能够手动添加关系,在这种情况下可能会更快。 Post模型中可能缺少该关系。 这是因为在烘焙时,它会检查其他表中是否有引用新模型的外键。 当表尚未存在时,它显然不会找到它。 我会在Post.php添加以下代码: public $hasMany = array('Comment'); 如果已经有$hasMany ,则必须将其添加到现有数组中。
  • 查找诸如“不存在”之类的条件(Find conditions like 'NOT EXISTS')
    问题 我的数据库中有 2 个表... 实体 id 描述 ..... 公共对象 .... model 我需要的模型(在本例中为 ) model_id 我想做这样的查询: select entita.* from entita where NOT EXISTS (select * from publicobjects where publicobjects.model = 'Entita' and publicobjects.model_id = entita.id) 如何在不使用自定义查询的情况下使用 Cakephp 的模型函数执行此操作? 谢谢 回答1 我相信您正在尝试从 Entita 表中查找不在 Publicobjects 表中的行。 假设这是正确的,这里是 MySQL 查找它的 SQL 查询: SELECT `entita`.* FROM `entita` LEFT JOIN `publicobjects` ON (`publicobjects`.`model` = 'entita' AND `publicobjects`.`model_id` = `entita`.`id`) WHERE `publicobjects`.`model_id` IS NULL 要使用 CakePHP 的模型进行这项工作,需要几个步骤。 我对您的模型名称做了一些假设,但我可能是错的
  • CakePHP find returns results with missing fields
    I need to get my User info and when I call $this->User->find('first', array('conditions' => array('User.id' => $user_id))); the result contains just some of the fields. I've currently updated database schema. On dev server it runs fine and returns all fields but on the production server those new fields are missing. Those servers have exactly the same configuration. I've already tried to remove contents of app/tmp/cache/models and I am using File engine for caching. The schema.php file is up to date, the contents of files in app/tmp/cache/models indicate that those fields are present but I
  • CakePHP 1.3 包含未正确构建关联(CakePHP 1.3 contain not building associations correctly)
    问题 这是我在这里的第一个问题。 我在 cakephp 1.3 中遇到了可包含行为的问题。 问题如下:我有一个具有以下关联的可交付模型: class Deliverable extends AppModel { var $name = 'Deliverable'; var $displayField = 'name'; var $actsAs = array('Containable'); var $belongsTo = array( 'Asset' => array( 'className' => 'Asset', 'foreignKey' => 'asset_id', 'dependent' => false ), 'DelRouteName' => array( 'className' => 'DelRouteName', 'foreignKey' => 'del_route_name_id', ), 'AccessGroup' => array( 'className' => 'AccessGroup', 'foreignKey' => false, 'conditions' => 'Deliverable.role_id = AccessGroup.id' ) ); var $hasOne = array( 'Artifact' => array( 'className
  • 带有“日期之间”的 CakePHP 模型(CakePHP Model with “Between dates”)
    问题 我有一个大数据集(超过十亿行)。 数据在数据库中按日期分区。 因此,我的查询工具必须在每个查询上指定一个 SQL between 子句,否则它必须扫描每个分区......而且,它会在它回来之前超时。 所以..我的问题是,数据库中分区的字段是一个日期.. 使用 CakePHP,如何在我的表单中指定“之间”日期? 我正在考虑在表单本身中执行“start_date”和“end_date”,但这可能会给我带来两个第二个问题..如何在链接到表的模型中验证它? 回答1 如果我正确地跟随你: 用户必须为从表单生成的查找查询指定开始/结束日期您需要验证这些日期,例如: 开始日期之后的结束日期结束日期与开始日期相差几个世纪您希望验证错误显示在表单中(即使这不是保存) 由于您想验证这些日期,当它们隐藏在您的条件数组中时,它们将更难获取。 我建议尝试分别传递这些,然后再处理它们: $this->Model->find('all', array( 'conditions' => array(/* normal conditions here */), 'dateRange' => array( 'start' => /* start_date value */, 'end' => /* end_date value */, ), )); 您应该希望能够处理beforeFind过滤器中的所有其他内容:
  • CakePHP 1.3 contain not building associations correctly
    this is my first question here. I'm having an issue with containable behavior in cakephp 1.3. The issue is as follows: I have a Deliverable model with the following associations: class Deliverable extends AppModel { var $name = 'Deliverable'; var $displayField = 'name'; var $actsAs = array('Containable'); var $belongsTo = array( 'Asset' => array( 'className' => 'Asset', 'foreignKey' => 'asset_id', 'dependent' => false ), 'DelRouteName' => array( 'className' => 'DelRouteName', 'foreignKey' => 'del_route_name_id', ), 'AccessGroup' => array( 'className' => 'AccessGroup', 'foreignKey' => false,
  • cakephp密码验证(cakephp password validation)
    问题 var $validate = array( 'password' => array( 'passwordlength' => array('rule' => array('between', 8, 50),'message' => 'Enter 8-50 chars'), 'passwordequal' => array('checkpasswords','message' => 'Passwords dont match') ) ); function checkpasswords() { return strcmp($this->data['Airline']['password'],$this->data['Airline']['confirm password']); } 此代码不起作用,即使它们匹配也总是给出错误消息。 此外,当我进行编辑时,我收到以下错误,因为没有密码字段。 有什么解决办法吗 Undefined index: password [APP/models/airline.php, line 25] 回答1 你在使用 AuthComponent 吗? 请注意,它会散列所有传入的密码字段(但不是“密码确认”字段,请使用debug($this->data) ),因此这些字段将永远不会相同。 阅读手册并使用 AuthComponent::password
  • symfony 与 cakephp [关闭](symfony vs cakephp [closed])
    问题 就目前而言,这个问题不适合我们的问答形式。 我们希望答案得到事实、参考或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。 如果您认为此问题可以改进并可能重新打开,请访问帮助中心以获取指导。 8 年前关闭。 symfony 和 cakephp 在概念上有什么区别? 回答1 只是为了平衡这个线程,这就是我喜欢 symfony 的原因: 使用 PHP5 它运行着一些非常大的网站,比如Yahoo! 答案,美味,每日运动。 很好的文档。 网站上的 jobeet 教程很棒。 带您直接了解所有功能,完成后您会觉得自己可以构建任何东西。 高度模块化; 许多 symfony 组件都是独立工作的。 允许您选择使用波轮或学说作为你的ORM。 Doctrine 真的很棒而且很容易使用。 您可以使用 YAML 或 PHP 定义模型,这取决于您。 有些人不喜欢配置文件,如果您想避开 YAML,您可以真正限制他们的使用。 更新的 symfony cli(从 1.2 开始)很棒。 我同意 abales,在这个版本之前它有点不稳定,但现在它有很好的文档记录并遵循可预测的格式。 与 ruby​​ on rails 有很多,我的意思是很多相似之处,当然除了 PHP 不像 Ruby(!) 那样漂亮或灵活。 但是,如果您与蛋糕开发商交谈,他们可能会说相反的 :) symfony admin
  • 属于 cakephp 和 html select 中的问题,我不明白该怎么做(BelongsTo problem in cakephp and html select, i can't understand how to do that)
    问题 cakephp 菜鸟的简单问题: 我有两个模型,玩家和团队。 团队有一个 id (int) 和一个 cool_name (varchar)。 Player 有一个 id (int)、一个cool_name (varchar) 和一个团队表的引用 team_id (int)。 Cool_name 而不是 name,因为我没有英文表,所以我不能使用字段“name”。 所以,一个球队有很多球员,而一个球员属于球队。 我的播放器型号: class Player extends AppModel { var $name = 'Player'; var $belongsTo = array('Team'); } (团队模型里面只有名字) 玩家控制器: class PlayersController extends AppController { var $name = 'Players'; function add() { $this->set('teams', $this->Player->Team->find('list')); //then save... } 在播放器的添加视图中: //... echo $form->input('squadra_id'); //... 好的,所以我有一个包含团队 ID 的选择; 我不想要 id,而是团队的名称,然后保存 id:类似于(在
  • CakePHP 1.3-where子句中的未知列(CakePHP 1.3 - Unknown column in where clause)
    问题 我正在开发一个已经存在的cakephp 1.3项目,因此需要向数据库中添加一个新表。 我的控制器中有这个: $conditions = array('ShootingPlacement.person_id' => $id, 'Email.person_id' => $id, 'Email.shooting_placement_id' => 'ShootingPlacement.id'); $shootingPlacements = $this->ShootingPlacement->find('all', compact('conditions')); 这给了我这个错误: Warning (512): SQL Error: 1054: Unknown column 'Email.person_id' in 'where clause' [CORE/cake/libs/model/datasources/dbo_source.php, line 684] 这是它正在尝试创建的查询: SELECT `ShootingPlacement`.`id`, ... FROM `shooting_placements` AS `ShootingPlacement` LEFT JOIN `people` AS `Person` ON (`ShootingPlacement`.`person
  • CakePHP 保存 HABTM 数据(CakePHP saving HABTM data)
    问题 我有 2 个模型, Client和Security 。 它们与 HATBTM 关系相关联。 我制作了一个名为clients_securities的连接表。 所以一个Client可以有很多证券,一个Security可以属于很多Client 。 这是我的关系定义: //Client Model: public $hasAndBelongsToMany = array( 'Security' => array( 'className' => 'Security', 'joinTable' => 'clients_securities', 'foreignKey' => 'client_id', 'associationForeignKey' => 'security_id', 'unique' => true, ) ); //Security Model: public $hasAndBelongsToMany = array( 'Client' => array( 'className' => 'Client', 'joinTable' => 'clients_securities', 'foreignKey' => 'security_id', 'associationForeignKey' => 'client_id', 'unique' => true, ) )