Laravel 8에 기본 Eloquent 모델 값을 추가하는 방법은 무엇입니까?

원래 게시된 @https://codeanddeploy.com 방문하여 샘플 코드 다운로드: https://codeanddeploy.com/blog/laravel/how-to-add-default-eloquent-model-values-on-laravel-8

이 게시물에서는 Laravel 8에서 기본 eloquent 모델 값을 추가하는 방법에 대한 예를 공유합니다. 레코드를 저장할 때마다 자동으로 추가되는 모델 필드 값의 기본값을 추가하려는 경우.

이것은 모델 인스턴스를 생성할 때 기본값을 추가할 수 있는 Laravel의 멋진 기능 중 하나입니다. 모델에 추가 매개변수를 전달할 필요가 없지만 자동으로 추가되므로 코드를 정리하는 데 매우 유용합니다.

아래 예에서는 마이그레이션을 먼저 생성하지만 건너뛸 수 있습니다.

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreatePostsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('posts', function (Blueprint $table) {
            $table->id();
            $table->string('title');
            $table->string('description')->nullable();
            $table->text('body');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('posts');
    }
}


$attributes 속성을 사용하여 모델에 기본값을 정의할 수 있습니다.

다음은 기본 eloquent 모델 값을 추가하는 예입니다.

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Post extends Model
{
    //...

    /**
     * The model's default values for attributes.
     *
     * @var array
     */
    protected $attributes = [
        'title' => 'Default Title',
    ];

    //...
}


이제 기본값을 사용하거나 사용하지 않고 코드를 테스트해 보겠습니다.

우리의 route/web.php에 아래 코드를 추가했습니다. 이는 테스트 목적으로만 사용됩니다.

<?php

use App\Models\Post;
use Illuminate\Support\Facades\Route;

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

Route::get('/', function () {

    Post::create([
        'body' => 'post body'
    ]);

    Post::create([
        'title' => 'Manually title',
        'body' => 'post body'
    ]);

    $posts = Post::all();

    foreach($posts as $post) {
        echo 'title: '. $post->title . ', body: ' . $post->body . '<br>';
    }
});


첫 번째 모델 생성에서 볼 수 있듯이 값과 함께 body 속성만 전달했지만 두 번째 모델 생성에서는 각 값과 함께 제목과 본문을 포함했습니다.

결과는 다음과 같습니다.



모델에서 정의된 기본값을 사용하여 첫 번째 줄 결과를 볼 수 있습니다. 두 번째는 수동으로 추가되었습니다.

이 튜토리얼이 도움이 되었으면 합니다. 이 코드를 다운로드하려면 여기https://codeanddeploy.com/blog/laravel/how-to-add-default-eloquent-model-values-on-laravel-8를 방문하십시오.

행복한 코딩 :)

좋은 웹페이지 즐겨찾기