cakephp найти массивы

Привет всем, я продолжаю получать неизвестный столбец «Массив» в «предложении where» с $receiverName, когда я отлаживаю $receiver, я получаю этот вывод

array(
    (int) 0 => array(
        'Invoice' => array(
            'receiver_id' => '3',
            'id' => '1'
        ),
        'FieldsInvoice' => array(
            (int) 0 => array(
                'id' => '1',
                'field_id' => '9',
                'invoice_id' => '1',
                'entered_value' => '1000.00'
            )
        )
    ),
    (int) 1 => array(
        'Invoice' => array(
            'receiver_id' => '4',
            'id' => '2'
        ),
        'FieldsInvoice' => array(
            (int) 0 => array(
                'id' => '2',
                'field_id' => '9',
                'invoice_id' => '2',
                'entered_value' => '2000.00'
            )
        )
    ),
    (int) 2 => array(
        'Invoice' => array(
            'receiver_id' => '7',
            'id' => '3'
        ),
        'FieldsInvoice' => array()
    ),
    (int) 3 => array(
        'Invoice' => array(
            'receiver_id' => '8',
            'id' => '4'
        ),
        'FieldsInvoice' => array()
    ),

    //returns receiver_id from the invoices table where sender_id=current user account

$receiver=$this->Invoice->find('all',array(
        'fields'=>('receiver_id'),'conditions'=>array(
        'sender_id'=>$accounts2)));

    //returns company_name from the accounts tables where receiver_id=account.id

то, что я пытаюсь сделать, это получить receiver_id из массива, затем сравнить его с account.id, затем напечатать company_name, но это создает проблему с оператором where в моем $receiverName find

$receiverName=$this->Account->find('all',array(
        'fields'=>('company_name'),'conditions'=>array(
        'id'=>$receiver)));

person user1393064    schedule 16.08.2012    source источник
comment
Используйте 1_   -  person Arun Jain    schedule 16.08.2012
comment
по-прежнему Столбец не найден: 1054 Неизвестный столбец «Массив» в «где пункт»   -  person user1393064    schedule 16.08.2012
comment
что он печатает с debug($accounts2); ?   -  person Arun Jain    schedule 16.08.2012


Ответы (2)


Это потому, что вы передаете массив, измените строку $receiver на следующую

$receiver=$this->Invoice->field('receiver_id',array('sender_id'=>$accounts2));
person Loken Makwana    schedule 16.08.2012
comment
когда я перехожу к эху $receiverName, он просто распечатывает массив - person user1393064; 16.08.2012
comment
все заработало, просто нужно было создать индекс в представлении, да - person user1393064; 16.08.2012

1) Загрузите и установите DebugKit (это НЕОБХОДИМО для любого проекта CakePHP - серьезно)

2) Щелкните значок DebugKit в правом верхнем углу, чтобы развернуть его параметры.

3) Перейдите на вкладку «Sqllog» и посмотрите, где отображается «Массив» вместо нужного значения.

4) Измените значение, чтобы оно не было массивом

5) Купите себе мороженого, или пива, или чего-нибудь еще и отдохните остаток ночи, так как ваш запрос теперь работает.


PS - также согласно комментарию, это должно быть 'fields'=>array('company_name'), а не 'fields'=>('company_name')

person Dave    schedule 16.08.2012
comment
Я получаю эту ошибку не реже одного раза в неделю и решаю ее точно так же, как указано выше, за 10 секунд... не знаю, почему -1 голос. (Пожалуйста, в будущем, если вы проголосуете за что-то, по крайней мере, прокомментируйте, почему вы считаете, что это плохой ответ) - person Dave; 16.08.2012