Cakephp 如何设置 find() 在没有结果匹配时返回空白数组而不是空数组

问题描述 投票:0回答:2

默认情况下,当没有找到任何内容时,cakephp 会在

find()
上返回空数组。 但如何将其设置为显示为空白数组。

例如:

$customer = $this->Transaction->Customer->find(--conditions to return 0 result.--)

我希望它显示为空白数组,像这样。

array('Customer' => array('customer_id'=>null, 'name'=>null, 'lastname'=>null))

不只是一个喜欢

array()
null

因为我总是看到错误显示

$customer['Customer']['name']
是未定义的索引。而且我不喜欢每次都用
isset()
is_null()
来检查。

php arrays cakephp find
2个回答
2
投票

在模型中使用 afterFind 回调方法。像这样的东西:

public function afterFind($results, $primary = false) {
    if (empty($results)) {
        $results = array('Customer' => array('customer_id'=>null, 'name'=>null, 'lastname'=>null))
    }
    return $results;
}

http://book.cakephp.org/2.0/en/models/callback-methods.html


0
投票

如果你真的想/需要这样做,你可以使用类似的东西:

$default = array('Customer' => array('customer_id' => null, 'name'=>null, 'lastname' => null));
$customer = $this->Transaction->Customer->find(...)
$customer = array_merge($default, $customer);

这样,如果结果为空,它将使用您的默认值。

但是,这不是一个好的做法,因为您最终可能会在页面中显示

"Welcome, NULL"
。您应该在您的视图中使用
if (!empty($customer)) ...

另外,在这个例子中,您是否使用

find->('first')

© www.soinside.com 2019 - 2024. All rights reserved.