Я пытаюсь получить доступ к коллекции и создать новый объект, используя часть результатов.Не удается получить доступ к свойствам коллекции Lavavel в Loop
Я продолжаю получать это Undefined offset: 0
, и я не могу обойти его.
Вот моя петля foreach в моем контроллере;
foreach($payments as $payment_key => $payment_value) {
//payment_value['Vendor ZIP'] will be something like "SW1A1AA"
$partial_vendor_zip = trim_and_convert($payment_value['Vendor ZIP'], 0, -3);
//$partial_vendor_zip will be something like "SW1A"
//SQL is something like SELECT * FROM postcode_coord WHERE postcode = 'SW1A' LIMIT 1;
$postcode_coord = PostcodeCoord::where('postcode', '=', $partial_vendor_zip)->take(1)->get();
print $postcode_coord['0']->lat; //causes error; Undefined offset: 0
$markers[] = (object)[
"postcode" => $postcode_coord->postcode,
"payment_name" => $payment_value['Contract Title'],
"full_postcode" => $payment_value['Vendor ZIP'],
"lat" => $postcode_coord->lat,
"lng" => $postcode_coord->lng,
];
}
Интересно, что я все еще могу получить отпечаток всех «лат», но также получаю ошибку. Если я заменю это только print_r($postcode_coord);
, то вот образец моей коллекции;
Illuminate\Database\Eloquent\Collection Object
(
[items:protected] => Array
(
[0] => App\Models\PostcodeCoord Object
(
[connection:protected] =>
[table:protected] =>
[primaryKey:protected] => id
[perPage:protected] => 15
[incrementing] => 1
[timestamps] => 1
[attributes:protected] => Array
(
[id] => 429
[postcode] => CF11
[lat] => 51.47
[lng] => -3.20
[created_at] => 2015-02-20 13:07:01
[updated_at] => 2015-02-20 13:07:01
)
[original:protected] => Array
(
[id] => 429
[postcode] => CF11
[lat] => 51.47
[lng] => -3.20
[created_at] => 2015-02-20 13:07:01
[updated_at] => 2015-02-20 13:07:01
)
[relations:protected] => Array
(
)
[hidden:protected] => Array
(
)
[visible:protected] => Array
(
)
[appends:protected] => Array
(
)
[fillable:protected] => Array
(
)
[guarded:protected] => Array
(
[0] => *
)
[dates:protected] => Array
(
)
[casts:protected] => Array
(
)
[touches:protected] => Array
(
)
[observables:protected] => Array
(
)
[with:protected] => Array
(
)
[morphClass:protected] =>
[exists] => 1
)
)
)
Так что работает! Но я не могу ссылаться на атрибуты. Даже когда я пытаюсь изменить свой запрос на что-то вроде;
$postcode_coord = PostcodeCoord::where('postcode', '=', $partial_vendor_zip)->take(1)->toArray();
И это просто дает мне неопределенную ошибку метода.
Laravel очень запутанным мне ...
Что происходит при печати $ postcode_coord-> lat; ? (без ['0']) – retrograde
Я получаю неопределенную ошибку свойства для $ lat – mikelovelyuk
Я не использовал take (1) -> get() раньше, но кроме этого все выглядит хорошо для меня. Возможно, попробуйте выполнить sub take (1) -> get() с -> first(), а затем попробуйте dd ($ postcode_coord-> lat); – retrograde