У меня есть эти таблицы

Клиенты

id
nombre_rz
ced_rif
телефон
id_usuario

Солиситанты

id
номер
электронная почта
телефон
id_cliente

cliente->hasMany('solicitante')<br>
solicitante->belongsTo('cliente')<br>

^ Это хорошо написано в моделях, просто стараюсь не делать стену из текста.

После аутентификации, когда я сделаю

$cliente = Cliente::where('usuario_id','=',Auth::id())->with('solicitante')->get();
                    dd($cliente);

Или

$cliente = Cliente::where('usuario_id','=',Auth::id())->with(array('solicitante' => function($query)
            {
                $query->where('cliente_id', '=', '35');

            }))->get();
            dd($cliente);

Я получил этот объект Объект из запроса

И используя toArray (), я получаю это

Массив из объекта

И если индекс доступа 0 этого массива, например

$array = $cliente->toArray(); dd($array['0']);

Я получил

[Индекс 0 массива] [3]

Насколько я вижу, запросы верны, и данные, которые мне нужны, есть, но я не знаю, почему я не могу получить доступ к объекту, например

$cliente->id; $cliente->telefono, $cliente->solicitante->nombre, $cliente->solicitante->email

Это всегда бросает

Неопределенное свойство: Illuminate \ Database \ Eloquent \ Collection :: $ telefono

Не могу понять этого поведения.

0
Mercality 20 Авг 2014 в 04:06
Это последнее изображение i.stack.imgur.com/veeAu.png
 – 
Mercality
20 Авг 2014 в 04:07

1 ответ

Лучший ответ

Вы возвращаете массив объектов, потому что запросили у Laravel группу. Вы можете сделать

foreach ($cliente as $client)
{
     echo $client->telefono;
     foreach ($client->solicitante as $solicitante)
     {
         $solicitante->nombre;
     }
}

ИЛИ вы можете указать, что вам нужен только один результат

$cliente = Cliente::where('usuario_id','=',Auth::id())->with('solicitante')->first();
echo $cliente->telefono;
foreach ($client->solicitante as $solicitante)
{
    $solicitante->nombre;
}
0
Laurence 20 Авг 2014 в 06:53