Laravel получить сообщение пользователя с отношениями - PullRequest
0 голосов
/ 23 мая 2018

У меня есть две таблицы как user_blogs и users с этой структурой отношений

UserBlogs:

class UserBlogs extends Model
{
    protected $fillable = ['user_id', 'blog_content'];

    public function user()
    {
        return $this->belongsTo(User::class);
    }

    ...
}

Пользователь:

class User extends Authenticatable
{
    ...

    public function blogs()
    {
        return $this->hasMany(UserBlogs::class);
    }
}

в контроллере iможно получить блоги пользователей с этим кодом:

$userBlogs = User::find($id)->blogs;

, и я могу получить результат на выходе, но почему этот код не работает, и я получаю ошибку:

$userBlogs = auth()->user()->blogs();

или

$userBlogs = auth()->user()->blogs;

миграция:

public function up()
{
    Schema::create('user_blogs', function (Blueprint $table) {
        $table->increments('id');
        $table->integer('user_id')->unsigned();
        $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
        $table->string('blog_title');
        $table->longText('blog_content');
        $table->timestamps();
    });
}

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

У меня также есть такая же структура для пользователей и их сообщений.У меня работает следующий код:

$results = Post::with(['user'])->where('user_id',$user_id);
$posts = $results->get();

Post.php

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Post extends Model {

    public function user() {
        return $this->belongsTo(User::class, 'user_id');
    }

}
0 голосов
/ 23 мая 2018

Примечание: из-за поведения Eloquent для определения имен таблиц, вы должны называть свои модели не множественным, а единичным.

UserBlogs следует называть UserBlog вместо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...