Laravel, используя метод модели в качестве свойства

Я новичок в Laravel и играю с этим. Извините, если это глупый вопрос. Я просто не мог понять, как работают красноречивые отношения. Например:

// we have posts and comments related to them
class Post extends Model
{
public function comments(){
return $this->hasMany(Comment::class);
}
}

Теперь мы можем сделать это, чтобы получить комментарии к указанному посту:

$comments = $post->comments;

Первый вопрос: как это может быть возможно? Где в Laravel имя метода объявлено как свойство.

Второй вопрос: как я могу использовать класс Comment, не вызывая его в заголовке файла с помощью оператора «use». (используйте приложение \ Комментарии)

Благодарю.

1

Решение

Ответ на вопрос 1: Laravel использует магию __get() метод для доступа к методу как свойству, которое внутренне вызывает много функций для получения отношения. Вы можете проверить код Вот

Ответ на вопрос 2: путь к классу можно передать в виде строки в качестве параметра отношения, например

return $this->hasMany('App\Comments');
3

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector