2015-11-25 2 views
2

У меня очень и очень странная проблема.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. Что мне здесь не хватает?

ответ

1

Попытка передать переменную $blog непосредственно к view() функции

class BlogController extends Controller 
{ 

    public function show($id) 
    { 
     $blog = Blog::find($id); 
     return view('welcome', ['blog' => $blog]); 
    } 
} 
+1

Undefined переменной: блог (Просмотр: /var/www/vue.nl/resources/views/welcome.blade.php). Кажется, не логично, если учесть, что изменение имени метода работает. – klaaz

+1

А вот моя ошибка: замените '$ blog'' ''' blog '=> $ blog]' в функции 'view()' – nipeco

+0

Я уже это сделал ;-) Все тот же исходный номер: Недопустимый аргумент, предоставленный foreach () (View: /var/www/vue.nl/resources/views/welcome.blade.php) – klaaz

Смежные вопросы