집 >데이터 베이스 >MySQL 튜토리얼 >Post 모델에서 확장된 Laravel의 Eloquent를 사용하여 Article 및 Question 모델에 대한 단일 테이블 상속을 어떻게 구현할 수 있습니까?
질문:
Post 모델 지정:
<code class="php">class Post extends Eloquent { // Model code... }</code>
기사 및 질문 모델에 대한 상속을 구현하여 Post에서 확장할 수 있도록 하려면 어떻게 해야 합니까?
단일 테이블 상속
단일 테이블 상속에는 모든 모델 데이터 저장이 포함됩니다. 모델을 구별하기 위한 유형 열이 있는 단일 테이블에 있습니다. 그러나 이 접근 방식은 특정 모델 유형에 사용되지 않는 열로 인해 수많은 NULL 값이 발생할 수 있습니다.
다중 테이블 상속
다중 테이블 상속은 다형성을 사용하여 별도의 테이블을 활용합니다. 각 모델을 참조 테이블을 통해 연결합니다. 참조 테이블에는 postable_id 및 postable_type과 같은 열이 포함됩니다.
Eloquent 모델 설정
Post 모델에서 morphTo 관계를 정의합니다.
<code class="php">public function postable(){ return $this->morphTo(); }</code>
질문 모델에서(Article과 유사):
<code class="php">public function post(){ return $this->morphOne('Post', 'postable'); }</code>
사용:
<code class="php">$post = new Post(); $post->shared_column = 'New Question Post'; $post->save(); $question = new Question(); $question->question_column = 'test'; $question->post()->save($post);</code>
결론
다중 테이블 상속은 단일 테이블 상속에 비해 더 효율적인 데이터베이스 구조. 추가 모델 로직이 필요하지만 Laravel의 Eloquent에서 모델 상속을 처리하기 위한 보다 유연하고 확장 가능한 접근 방식을 제공합니다.
위 내용은 Post 모델에서 확장된 Laravel의 Eloquent를 사용하여 Article 및 Question 모델에 대한 단일 테이블 상속을 어떻게 구현할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!