Вместо идентификатора получите данные всего объекта в Laravel

#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