Я новичок в 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: Laravel использует магию __get()
метод для доступа к методу как свойству, которое внутренне вызывает много функций для получения отношения. Вы можете проверить код Вот
Ответ на вопрос 2: путь к классу можно передать в виде строки в качестве параметра отношения, например
return $this->hasMany('App\Comments');
Других решений пока нет …