웹 응용 프로그램 중 하나를 CodeIgniter에서 Laravel으로 변환하는 중입니다. 그러나 현재이 모든 것을 이미 수행하는 로깅 클래스가 있으므로 현재 모든 테이블에 updated_at
/ created_at
필드 를 추가하고 싶지 않습니다 .
내가 설정할 수 있다는 것을 알고 있습니다 $timestamps = false;
.
Vendor\laravel\framework\src\illuminate\Datebase\Eloquent\Model.php
그러나 나는 오히려 라 라벨의 핵심 파일을 변경하지 않거나 내 모델의 모든 사람들이 맨 위에 그것을 갖도록하고 싶습니다. 모든 모델에서 다른 곳에서 이것을 비활성화하는 방법이 있습니까?
답변
public $timestamps = false;
모든 모델에서 선언 하거나 BaseModel을 작성하고 정의한 후 모든 모델을 웅변이 아닌 확장해야합니다. Eloquent를 사용하는 경우 피벗 테이블에는 타임 스탬프가 있어야합니다.
업데이트 : Laravel v3 이후 피벗 테이블에서 타임 스탬프가 더 이상 필요하지 않습니다.
업데이트 : $table->timestamps()
마이그레이션에서 제거하여 타임 스탬프를 비활성화 할 수도 있습니다 .
답변
이 라인을 모델에 넣으십시오 .
public $timestamps = false;
그리고 그게 다야!
예:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Post extends Model
{
public $timestamps = false;
//
}
한 작업에서 타임 스탬프를 비활성화하려면 (예 : 컨트롤러에서) :
$post->content = 'Your content';
$post->timestamps = false; // Will not modify the timestamps on save
$post->save();
모든 모델에 대해 타임 스탬프를 비활성화하려면 새 BaseModel
파일을 작성 하십시오.
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class BaseModel extends Model
{
public $timestamps = false;
//
}
그런 다음을 사용하여 각 모델을 다음 BaseModel
과 같이 확장하십시오 .
<?php
namespace App;
class Post extends BaseModel
{
//
}
답변
updated_at 업데이트 만 비활성화해야하는 경우이 방법을 모델에 추가하십시오.
public function setUpdatedAtAttribute($value)
{
// to Disable updated_at
}
이것은 부모 setUpdatedAtAttribute () 메소드를 대체합니다. created_at는 평소와 같이 작동합니다. created_at 업데이트 만 비활성화하는 방법을 작성할 수있는 것과 같은 방법입니다.
답변
5.5.x를 사용하는 경우 :
const UPDATED_AT = null;
‘created_at’필드에는 다음을 사용할 수 있습니다.
const CREATED_AT = null;
최신 버전인지 확인하십시오. (이것은 Laravel 5.5.0에서 중단되었으며 5.5.5에서 다시 수정되었습니다).
답변
웅변 모델 :
class User extends Model
{
protected $table = 'users';
public $timestamps = false;
}
아니면 단순히 이것을 시도하십시오
$users = new Users();
$users->timestamps = false;
$users->name = 'John Doe';
$users->email = 'johndoe@example.com';
$users->save();
답변
앞에서 언급했듯이 기존 모델에서 타임 스탬프를 제거하려는 경우이를 모델에 배치하십시오.
public $timestamps = false;
또한 up()
메소드 에서 다음 코드로 마이그레이션을 작성 하고 실행하십시오.
Schema::table('your_model_table', function (Blueprint $table) {
$table->dropTimestamps();
});
당신은 사용할 수 있습니다 $table->timestamps()
귀하의 down()
롤백을 허용하는 방법.
답변
단지 선언 public
당신이에 타임 스탬프 변수 Model
에 false
모든 것이 잘 작동합니다.
public $timestamps = false;