#php #arrays #laravel #object
Вопрос:
У меня есть объект с такой структурой, который мне нужен, чтобы получить имя source_id в моем файле blade, когда я, кстати, пытаюсь получить к нему доступ
$данные[‘идентификатор источника’] [‘имя’]
$данные->идентификатор источника->>имя
$данные->{‘идентификатор источника’}->>{‘имя’}
Я получил эту ошибку
Пытаясь получить свойство «имя» не-объекта , я просто пытаюсь
this $data->source_id
, но оно возвращает свой идентификатор, а не объект, есть какие-либо предложения?
{
"id": 4,
"type": "s1",
"source_id": {
"id": 1,
"code": "۱",
"name": "تیل پطرول",
"manager": "نجیب",
"phone": "۰۷۷۲۴۳۴۳۲۱",
"address": "دهمزنگ",
"capacity": "0.00",
"oum_id": 1,
"created_at": "2021-03-02T15:55:20.000000Z",
"updated_at": "2021-03-02T15:55:20.000000Z"
},
"source_type": "STRG",
}
Вот функция для получения данных
public function loadSale($id){
$base = Sale::findOrFail($id);
if ($base->type == "s1") {
$sale = Sale::with(['saleS1.project.pro_data', 'source_id'])->where('id', $id)->first();
$sale['sales'] = $sale->saleS1;
}
return $sale
}
Комментарии:
1. имеет ли ваше отношение имя source_id, если нет, то используйте имя отношения как
$data->[relation_name]->name
. Или может возникнуть какая-то проблема междуdata
иsource
отношениями2. не могли бы вы, пожалуйста, рассказать нам, как вы получили этот объект $data в первую очередь? Я знаю, что вы отправили его на свой вид лезвия, используя
return view('view_name', ['data' => $some_data]);
. Я хочу знать, откуда у тебя этот$some_data
предмет3. обновлено, и отношение имеет то же имя, что и source_id
4. Я предполагаю, что имя вашего отношения и поле внешнего ключа совпадают, вот почему вы получаете
id
, когда делаете это$data->source_id
5. Да, в этом и была проблема, я использую исходный код, и теперь он работает нормально. спасибо 🙂
Ответ №1:
Я мог бы понять вашу проблему. Но это объект, а не массив. Вы должны использовать цикл для доступа к объекту. Создайте цикл for и и, внутри которого вы можете получить доступ к определенному полю объекта. Надеюсь, это поможет
Комментарии:
1. @MAY комментарий-это ответ
Ответ №2:
Как @MAY упомянула в комментарии
Я предполагаю, что имя вашего отношения и поле внешнего ключа совпадают, поэтому вы получаете идентификатор, когда делаете это
$data->source_id
Поэтому я изменяю отношение и определяю source
, теперь я не могу получить доступ к данным просто так, как раньше $data->source->name