#laravel #laravel-7
Вопрос:
Я получаю данные следующим образом от контроллера:
public function show($id)
{
$news = News::select('id','heading', 'body', 'image','category')->with('newsCategory')->where('id', $id)->first();
return view('pages.news_details')->with('news', $news);
}
Новостная модель-это
public function newsCategory()
{
return $this->belongsTo(Category::class, 'category');
}
и я получил успешный ответ
{"id":1,"heading":"Fugiat veniam nons.",
"body":"lorem ipsum dolor sit amet",
"image":null,
"category":4,
"news_category":{"id":4,"title":"health care","created_at":null,"updated_at":null}}
Тем не менее, я пытаюсь получить доступ к нему в файле blade. Все свойства доступны, за исключением news-category
. Вот как я пытаюсь получить к нему доступ
$news->news_category->title
dd($news->toArray())
ВОЗВРАТ
Но это не работает. Как я могу получить доступ к собственности таким образом ?
Комментарии:
1. Отношения таковыми
newsCategory
неnews_category
являются .2. dd($news->toArray()); перед возвращением просмотра и публикацией его в question
3. добавлено @JohnLobo
4. попробуйте $новости->Категория новостей ->>заголовок
5. ООО..! Это сработало. Но вопрос в том, что это
news_category
в dd, но почемуnewsCategory
сработало ?
Ответ №1:
Как уже писали в комментариях, вы пытаетесь получить доступ к неправильному свойству.
В вашей News
модели вы определили свойство newsCategory
и нет news_category
. Таким образом, собственность news_category
не существует.
Переключите свой код в режиме Blade на
$news->newsCategory->title
…тогда это должно сработать.
Ответ №2:
При преобразовании модели в массив или json laravel преобразует имена отношений в регистр змеи. Вот почему это показано как news_category
.
В вашем файле blade вы все еще имеете дело с красноречивым объектом, поэтому он еще не был преобразован в случай змеи. Таким образом, в вашем php-коде вам необходимо получить к нему доступ, newsCategory
поскольку именно так была определена связь.
Вы можете управлять этим поведением, используя статическое snakeAttributes
свойство модели.
**
* Indicates whether attributes are snake cased on arrays.
*
* @var bool
*/
public static $snakeAttributes = false;