Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 28.06.2018 13:01:46

Магия модели

Есть модель 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:: то в переменную вшиваются все методы?

Не в сети

#2 28.06.2018 15:42:20

Re: Магия модели

$post - обычный объект класса. Во view он передается также. Естественно, что методы тоже доступны. Вы же не приводите его к массиву: $post->toArray();

Не в сети

Подвал раздела