BelongsTo::make('User')

글을 작성할때 유저선택 창이 보일 것이다.


이것을 현재 로그인한 유저로 자동입력하게 하는 방법이다.


1. 첫번째로 관계를 맺어준다. User.php

1
2
3
4
5
    public function posts()
    {
        //나는 여러개의 post를 가지고 있습니다. 여기서 나는 user이다.
        $this->hasMany(Post::class);
    }
cs


2. Post.php

1
2
3
4
5
    public function user()
    {
        // 나는 유저에게 속한다.
        return $this->belongsTo(User::class);
    }
cs


3. Post.php 파일에 추가 소스 삽입

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
 
namespace App;
 
use Illuminate\Database\Eloquent\Model;
 
class Post extends Model
{
    public function user()
    {
        // 나는 유저에게 속한다.
        return $this->belongsTo(User::class);
    }
 
    //자동 유저 아이디 삽입
    public static function boot()
    {
        parent::boot();
 
        static::creating(function ($post) {
            $post->user_id = auth()->user()->id;
        });
    }
 
}
cs


4. Nova/Post.php

임포트 use Laravel\Nova\Fields\BelongsTo;

1
BelongsTo::make('User')->hideWhenCreating()->hideWhenUpdating(),
cs


원하는 컬럼명정의

1
 BelongsTo::make('작성자','User',\App\Nova\User::class)->hideWhenCreating()->hideWhenUpdating(),
cs


5. posts테이블에 user_id 컬럼을 추가한다.


글 작성유저id가 삽입이 된다.




글 작성시 유저 명이 보이지 않는다.



디테일보기 하며 글작성 유저명이 보인다.


+ Recent posts