Laavel Eloquent ORM의 작은 부분

8569 단어 LaravelPHPtech
이것은 Laavel의 Eloquent ORM에서 잘 사용되지 않을 수 있는 작은 단락입니다.
잊어버릴 때 매뉴얼에서 귀찮아서 정리하고 싶어요.

컨디션

  • PHP 8.1.2
  • Laravel 9.5.1
  • 주 키워드를 사용하지 않는 경우


    다음 두 가지 처리를 할 수 있다.
  • Eloquent를 사용하는 경우 주 키가 id로 변경되어 이 설정이 무효
  • 상기 자동 증가에 따른 설정도 무효
  • <?php
    
    namespace App\Models;
    
    use Illuminate\Database\Eloquent\Model;
    
    class Sample extends Model
    {
        /**
         * The primary key for the model.
         *
         * @var string
         */
        protected $primaryKey = null;   // 無効
    
        /**
         * Indicates if the IDs are auto-incrementing.
         *
         * @var bool
         */
        public $incrementing = false;   // 無効
    }
    

    created_at 및 업데이트at를 사용하지 않는 경우


    매뉴얼에 적힌 바와 같이 $timestamps 속성에 설정false하면 업데이트가 발생하지 않습니다.
    https://laravel.com/docs/9.x/eloquent#timestamps
    <?php
    
    namespace App\Models;
    
    use Illuminate\Database\Eloquent\Model;
    
    class Sample extends Model
    {
        /**
         * Indicates if the model should be timestamped.
         *
         * @var bool
         */
        public $timestamps = false; // 無効
    }
    
    또는 동적 설정값을 통해 대응할 수도 있다.
    <?php
    
    use App\Models\Sample;
    
    $model = new Sample();
    
    $model->timestamps = false;
    $model->save();
    

    created_at 및 업데이트at가 별명인 경우


    모델 클래스CREATED_AT 또는 UPDATED_AT 상수에 대해서만 별칭을 설정합니다.
    <?php
    
    namespace App\Models;
    
    use Illuminate\Database\Eloquent\Model;
    
    class Sample extends Model
    {
        /**
         * The name of the "created at" column.
         *
         * @var string|null
         */
        const CREATED_AT = 'create_date_time';
    
        /**
         * The name of the "updated at" column.
         *
         * @var string|null
         */
        const UPDATED_AT = 'update_date_time';
    }
    
    변경하지 않을 경우created_atupdated_at는 값으로 설정됩니다.
    https://github.com/laravel/framework/blob/v9.5.1/src/Illuminate/Database/Eloquent/Model.php#L184-L196

    created_at 및 업데이트어떤 at도 사용하지 않는 경우


    업데이트가 발생하지 않는 책상이라면 필요 없다updated_at.
    이 경우 UPDATED_AT 상수에 설정null하면 업데이트되지 않습니다.
    <?php
    
    namespace App;
    
    use Illuminate\Database\Eloquent\Model;
    
    class Sample extends Model
    {
        /**
         * The name of the "updated at" column.
         *
         * @var string|null
         */
        const UPDATED_AT = null;
    }
    
    라벨 코드를 보시면 좋을 것 같은데 열명null이면 아무것도 안 하는 것 같아요.
    https://github.com/laravel/framework/blob/v9.5.1/src/Illuminate/Database/Eloquent/Concerns/HasTimestamps.php#L50

    좋은 웹페이지 즐겨찾기