Laravel 9 Eloquent 모델 - 모델에 유지된 열 이름
P粉309989673
2023-09-03 14:36:02
<p>"속성"이라는 열이 있는 테이블이 있는 postgres 데이터베이스가 있습니다. </p>
<p>속성 열은 jsonb 유형이므로 Eloquent 변환을 사용합니다. </p>
<pre class="lang-php Prettyprint-override"><code>보호된 $casts = [
'속성' => AsArrayObject::class,
];
<p>"속성"이 이미 Eloquent 모델 속성이고 별칭 열 이름에 대한 규정이 없는 것 같기 때문에 이는 문제를 일으키는 것 같습니다. </p>
<p>이 줄은 다음과 같습니다.</p>
<pre class="lang-php Prettyprint-override"><code>$this->attributes['a_property_of_the_attributes_jsonb_field'] = '안녕하세요!';
<p>내 데이터베이스 테이블의 '속성' 필드가 아닌 내부 Eloquent 모델 속성에 액세스하는 것으로 나타납니다. 그 결과 다음 오류가 발생합니다. </p>
<pre class="brush:php;toolbar:false;">SQLSTATE[42703]: 정의되지 않은 열: 7 오류: "mytable" 관계의 "a_property_of_the_attributes_jsonb_field" 열이 존재하지 않습니다.
라인 1: "mytable" 세트 "a_property_of_the_attributes_jsonb_field" = $1 여기서 "mypk" = ...</pre>
<p>PHP가 아닌 다른 프로젝트가 데이터베이스를 사용하고 있기 때문에 열 이름을 바꿀 수 없습니다. </p>
<p>내 모델의 속성 필드에 ArrayObject로 어떻게 액세스하나요? </p>
간단한 해결책은 ArrayObject 접근자 메서드를 사용하는 것입니다.
으아악참고: 기본 jsonb 필드에 배열로 액세스하려면 "속성" 변환을 정의해야 합니다.
으아악