如何在CakePHP中生成MySQL IS NOT NULL条件?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何在CakePHP中生成MySQL IS NOT NULL条件?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1998字,纯文字阅读大概需要3分钟。
内容图文
![如何在CakePHP中生成MySQL IS NOT NULL条件?](/upload/InfoBanner/zyjiaocheng/882/da9e151ab02342ab9f5d977a91337105.jpg)
我正在尝试将结果的子集作为virtualField以便在我的视图中使用.我什至可能无法做到这一点,但是到目前为止,这是我所做的:
我从这个问题开始:CakePHP virtualField find all not null,导致this little beauty.
现在我有一个问题,其中find语句将(Array)传递到MySQL.
我的代码如下:
class Transaction extends AppModel {
public function __construct($id = false, $table = null, $ds = null) {
parent::__construct($id, $table, $ds);
$this->virtualFields['Accounts'] = $this->find("all", array("conditions" => array("account !=" => null)));
}
我看到了:
Error: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'Array' in 'field list'
SQL Query: SELECT `Transaction`.`id`, `Transaction`.`name`,
`Transaction`.`person_id`, `Transaction`.`account`, (Array)
AS `Transaction__Accounts` FROM `my_database`.`transactions`
AS `Transaction` WHERE `Transaction`.`person_id` = (2)
我也尝试了$this-> Transaction-> find和“ Transaction.account!=”,但无济于事.我发现(Array)有一些其他问题,但没有一个对我的情况有所帮助.任何指向正确方向的指针都将是很好的.
解决方法:
问题:您的查询结果是一个数组,您要告诉SQL为包含该数组的每个查询结果分配一个字段名-虚拟字段仅包含单级变量(如字符串).
解决方案:对这些条件使用连接结构本身,这些条件将返回嵌套结果集以及每个结果.使用CakePHP’s model relationships执行此操作:
<?php
class Transaction extends AppModel {
var $hasMany = array(
'Accounts' => array(
'className' => 'Transaction',
'foreignKey' => false,
'conditions' => array('Accounts.account IS NOT NULL')
)
);
}
?>
输出示例:
Array(
'Transaction' => array( // transaction data),
'Accounts' => array( // associated transaction data with account set to null
)
现在,您可以从该结果中收集信息,如果您从Transaction返回1000行,那么您将从嵌套在每个Transaction结果中的Accounts获得所有结果.这远非理想.在这里,您可以使加入条件更特定于目标相关的客户记录,或者这不是适合您的方法.
其他方法可能是:
>帐户模型,使用交易数据库表,隐式查找条件是该帐户为空
>手动查询以在事务模型的afterFind() method中检索这些结果,它将一次检索这些结果,然后您将返回array_merge($accounts,$transactions)
内容总结
以上是互联网集市为您收集整理的如何在CakePHP中生成MySQL IS NOT NULL条件?全部内容,希望文章能够帮你解决如何在CakePHP中生成MySQL IS NOT NULL条件?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。