Я пытаюсь разработать блог, используя Laravel 5
в котором я должен показать комментарий вместе с пользователем на пост.
Вот моя схема таблицы базы данных.
User
Posts
Comments
Вот мой User Model
public function posts()
{
return $this->hasMany('App\Models\Posts');
}
public function comments(){
return $this->hasManyThrough('App\Models\Comments','App\Models\Posts');
}
Вот мой Posts Model
public function user()
{
return $this->belongsTo('App\Models\User');
}
public function comments(){
return $this->hasMany('Ap\Models\Comments');
}
Вот мой Comment Model
public function posts()
{
return $this->belongsTo('App\Models\Posts');
}
public function user(){
return $this->posts->name;
}
Вот мой код, как я получаю доступ user name
$comments = Comments::find(1);
$comment['comment'] = $comments->comment;
$comment['user_name'] = $comments->name;
$comment['post_id'] = $comments->posts->id;
может быть, я не в правильном направлении? если я делаю правильно, то почему это не работает.
В 5 уровне вы не называете модель тем, что делаете. Поскольку модели хранятся в папке приложения, просто позвоните, как. Плюс я думаю, что вам нужно определить отношения
class User extends Model {
public function phone()
{
return $this->hasOne('App\Phone');
}
}
class Phone extends Model {
public function user()
{
return $this->belongsTo('App\User');
}
}
$phone = Phone::find(1);
Для случая с внешними ключами и больше относительно отношений Eloquent в laravel 5 просто следуйте документации на веб-сайте laravel. Обязательно посмотрите на динамические свойства, которые разрешены eloquent
Других решений пока нет …