Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Есть модель Post
<?php
namespace App;
use Carbon\Carbon;
use Illuminate\Support\Facades\Storage;
use Illuminate\Database\Eloquent\Model;
use Cviebrock\EloquentSluggable\Sluggable;
use Illuminate\Support\Facades\Auth;
class Post extends Model
{
use Sluggable;
const IS_DRAFT = 0;
const IS_PUBLIC = 1;
protected $fillable = ['title','content', 'date', 'description'];
public function comments()
{
return $this->hasMany(Comment::class);
}
public function getComments()
{
return $this->comments()->where('status', 1)->get();
}
}
В контроллере, ни к какой метод не вызывается, а только идёт обращение ко всей модели, нужной статье
public function show($slug)
{
$post = Post::where('slug', $slug)->firstOrFail();
return view('pages.show', compact('post'));
}
И в виде, вызывается метод $post->getComments, как этот метод попал в вид, если в контроллере, его не передавали?
или когда идёт любое обращение к классу, таким способом Post:: то в переменную вшиваются все методы?
Не в сети
$post - обычный объект класса. Во view он передается также. Естественно, что методы тоже доступны. Вы же не приводите его к массиву: $post->toArray();
Не в сети
Страницы 1