У меня очень и очень странная проблема.Laravel 5.1 ManyToMany теги в блогах не работают
Что я пытаюсь сделать, так это создать теги в своих сообщениях в блоге. Поэтому я использую отношения ManyToMany.
Это свежий установлен Laravel 5,1:
routes.php
Route::get('/{id}', '[email protected]');
Модели
blog.php
class Blog extends Model
{
public $timestamps = false;
public function tags()
{
return $this->belongsToMany('App\Tag');
}
}
Tag.php
class Tag extends Model
{
public function blogs()
{
return $this->belongsToMany('App\Blog');
}
}
Контроллер
BlogController.php
class BlogController extends Controller
{
public function show($id)
{
$blog = Blog::find($id);
return view('welcome', compact('blog'));
}
}
Welcome.blade.php
<h1>{{ $blog->title }}</h1>
<h2>Tags</h2>
@foreach($blog->tags as $tag)
<p>{{$tag->name}}</p>
@endforeach
Все необходимые таблицы создаются (блоги, теги, blog_tag), а также создаются сообщения и теги, и отношения задаются (attach) в blog_tag.
Когда я запускаю это я получаю эту ошибку
Invalid argument supplied for foreach() (View: /var/www/vue.nl/resources/views/welcome.blade.php)
кажется, что это что-то делать с $ блог-> теги. Если бы я изменить его $ блог-> tagss, а также изменить имя метода в blog.php к tagss (общественная функция tagss()) он работает безупречно ...
я не возьми. Я знаю, что могу просто изменить его на теги или что-то еще, но я следую простым учебникам здесь, так что это должно работать?
Является ли «теги» зарезервированным словом или есть что-то еще, чего я не вижу? Опять же, это новая установка Laravel. Что мне здесь не хватает?
Undefined переменной: блог (Просмотр: /var/www/vue.nl/resources/views/welcome.blade.php). Кажется, не логично, если учесть, что изменение имени метода работает. – klaaz
А вот моя ошибка: замените '$ blog'' ''' blog '=> $ blog]' в функции 'view()' – nipeco
Я уже это сделал ;-) Все тот же исходный номер: Недопустимый аргумент, предоставленный foreach () (View: /var/www/vue.nl/resources/views/welcome.blade.php) – klaaz