【问题标题】:CakePHP read() not retrieving belongsTo bindingsCakePHP read() 没有检索 belongsTo 绑定
【发布时间】:2011-06-17 21:18:18
【问题描述】:

我有一个名为Voicenote 的模型,它与FonykerActivitySourcebelongsTo 关系。当我执行以下操作时:

function admin_index(){

        $this->layout = 'admin';
        $this->Voicenote->recursive = 2;

        $fields = array(
            'Voicenote.id',
            'Voicenote.title',
            'Voicenote.created',
            'Voicenote.duration',
            'Voicenote.public',
        );

        $this->paginate = array(
            'fields' => $fields,
            'limit' => 20,
            'order' => array('id' => 'ASC')
        );

        $result = $this->paginate('Voicenote');
        pr($result);
        $this->set('result', $result);
    }

生成的数组没有FonykerActivitySource,对可能发生的情况有什么想法吗?

[0] => Array
        (
            [Voicenote] => Array
                (
                    [id] => 1
                    [title] => CFRFA5KBLPJZP79B2PG8XH8DFSMB8G
                    [created] => 2011-03-09 00:00:00
                    [duration] => 23868
                    [public] => 0
                )

            [Fonyker] => Array
                (
                )

            [ActivitySource] => Array
                (
                )

此外,当我尝试使用 unbindModel() 并取消绑定除 FonykerActivitySource 之外的所有内容时,它们甚至不会显示为空数组。

【问题讨论】:

    标签: php cakephp belongs-to findall


    【解决方案1】:

    我本人对 CakePHP 还很陌生,但我认为您还必须定义 FonykerActivitySource 模型?例如,将它们置于hasOnehasMany 关系中。

    编辑:另外,您的$fields 变量——您似乎没有从FonykerActivitySource 中选择任何值。

    【讨论】:

    • 它们以 belongsTo 为模式,如果我没有从中选择任何特定字段也没关系,它只会检索整个数据,我不会在代码 sn-p 但它确实从其他表中检索数据,而不是我想要的 2 个
    【解决方案2】:

    因为您正在使用 recursive = 2 并看到空的 FonykerActivitySource 数组,所以您肯定是在查询这些模型,但是您的限制性 'fields' 意味着您只会得到您列出的字段.

    您需要将FonykerActivitySource 中所需的字段添加到您的字段数组中。

    【讨论】:

    • 如何添加它们?只是 Fonyker.field 吗?而且我已经尝试使用其他递归类型以及绑定和解除绑定模型,它仍然不会从表中检索任何数据
    • 如果我删除递归,它将检索主表及其所有关系,除了 Fonyker 和 ActivitySource 表
    • @8vius 只需将“'Fonyker.field'”添加到 $fields 数组的末尾,例如就在“'Voicenote.public'”之后(当然没有双引号)。
    • 当我将字段添加到 Voicenote 外部时,它说它是 SQL 错误中的未知列
    • @8vius 你能把“订单”条目改成“Voicenote.id”而不是“id”吗,这可能是你的问题,因为 id 会模棱两可。
    猜你喜欢
    • 2012-09-15
    • 2013-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多