Как я могу отображать массивы одно значение в Laravel / PHP? - PullRequest
0 голосов
/ 01 апреля 2020

Я создал массив и хочу отобразить значения массива opens и closes для представления.

Класс магазина:

public function jsonLDFields()
{
    return $this->hasOne(JsonLDFields::class);
}

Класс JsonLDFields:

public function shop()
{
    return $this->belongsTo('App\User');
}

Магазин имеет jsonLDFields, jsonLDFields имеет столбец БД value для store_opens / store_closes

store_opens[store_times][monday][opens]

"store_opens" => array:1 [▼
    "store_times" => array:7 [▼
      "Monday" => array:1 [▼
        "opens" => "09:00"
      ]
      "Tuesday" => array:1 [▼
        "opens" => "09:00"
      ]
      "Wednesday" => array:1 [▼
        "opens" => "09:00"
      ]
      "Thursday" => array:1 [▼
        "opens" => "09:00"
      ]
      "Friday" => array:1 [▼
        "opens" => "09:00"
      ]
      "Saturday" => array:1 [▼
        "closes" => "10:00"
      ]
      "Sunday" => array:1 [▼
        "opens" => "10:00"
      ]
    ]
  ]

Когда я пытаюсь отобразить это так:

$shop->jsonLDFields->store_closes.

Результатом являются все значения массивов.

Когда я пытаюсь отобразить это так:

$shop->jsonLDFields->store_closes['opens']

Результат равен нулю.

Когда я пытаюсь отобразить это так:

$shop->jsonLDFields->store_opens['store_times']['Monday']['opens']

Результат равен нулю.

Когда я делаю dd($shop->jsonLDFields->store_opens);

Я получаю:

 array:1 [▼
 "store_times" => array:7 [▼
 "Monday" => array:1 [▼
  "opens" => "09:00"
]
"tuesday" => array:1 [▼
  "opens" => "09:00"
]
"Wednesday" => array:1 [▼
  "opens" => "09:00"
]
"Thursday" => array:1 [▼
  "opens" => "09:00"
]
"Friday" => array:1 [▼
  "opens" => "09:00"
]
"Saturday" => array:1 [▼
  "closes" => "10:00"
]
"Sunday" => array:1 [▼
  "opens" => "10:00"
    ]
  ]
 ]

Как я могу отобразить opens и closes значений в представлении?

1 Ответ

0 голосов
/ 02 апреля 2020

Я решил эту проблему и смог отобразить в массиве значения массивов.

Значения $shop->jsonLDFields->store_opens были сохранены в json array, поэтому мне нужно было это сначала исправить.

В контроллере:

if(!$shop->jsonLDFields->store_times == null) {
        $shop->jsonLDFields->store_times = json_decode($shop->jsonLDFields- 
        >store_times);
    }

Затем в представлении:

$shop->jsonLDFields->store_opens->store_times->monday->opens.

Не было необходимости использовать foreach и т. Д. c

Надеюсь, это кому-нибудь поможет, многому научился от этой проблемы, с которой я столкнулся!

...