Здравствуйте.
Создал таблицы:
Пользователей (users)
public function up(): void
{
Schema::create('users', function (Blueprint $table) {
$table->id();
$table->string('first_name');
$table->string('middle_name')->nullable();
$table->string('last_name')->nullable();
$table->string('nickname')->nullable();
$table->string('avatar')->default('default.jpg');
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->rememberToken();
$table->string('role', 50)->default('guest');
$table->timestamps();
});
}
Постов (blog_posts)
public function up(): void
{
Schema::create('blog_posts', function (Blueprint $table) {
$table->id();
$table->unsignedBigInteger('category_id');
$table->unsignedBigInteger('author_id');
$table->string('title');
$table->string('slug')->unique();
$table->text('excerpt')->nullable();
$table->string('thumbnail')->nullable();
$table->text('content_raw');
$table->text('content_html');
$table->string('tdk_title')->nullable();
$table->text('tdk_description')->nullable();
$table->string('tdk_keywords')->nullable();
$table->unsignedBigInteger('view_count')->default(0);
$table->boolean('is_published')->default(false);
$table->timestamp('published_at')->nullable();
$table->timestamps();
$table->softDeletes();
// Foreign keys
$table->foreign('author_id')
->references('id')
->on('users')
->onDelete('cascade');
$table->foreign('category_id')
->references('id')
->on('blog_categories')
->onDelete('cascade');
$table->index('is_published');
});
}
В таблице постов создал связь с Пользователями:
$table->foreign('author_id')
->references('id')
->on('users')
->onDelete('cascade');
Так как отошел от конвенции (вместо user_id использую author_id), в модели BlogPost указал отношение:
public function user(): BelongsTo
{
return $this->belongsTo(User::class, 'author_id', 'id');
}
В шаблоне пытаюсь получить имя пользователя ($post->author_id->first_name), но в результате получаю
При обращение $post->author_id - id пользователя получаю. Подскажите, где ошибся?