Laravel의 Eloquent ORM 중 어느 것이has이고 어느 것이belongs입니까?

3587 단어 LaravelORMEloquent

입문


Laravel의 Eloquent ORM에서 모델을 위해hasOne,hasMany,belongsTo와belongsToMany를 정의하여 모델 간의 관계를 나타낼 수 있다.
주종(부자)관계보다 성주(부모)의 한 쪽에서hasOne,hasMany를 정의하고 종(자)의 한 쪽에서belongsTo를 정의하면 되지만 초보자에게는 주종관계를 똑똑히 보기 어려워서 어느 쪽에서has를 정의하고 어느 쪽에서belongsTo를 정의하는 결정 방법을 정리했다.

어느 것이has인지 Belong인지 결정하는 방법

  • 1 대 1 시
  • 표 구조에서 상대방 id를 가진 열의 모델에서belongsTo를 정의하고 다른 모델에서hasOne을 정의한다
  • 1 대 다의 경우
  • 표 구조에서 상대방 id를 가진 열의 모델에서belongsTo를 정의하고 다른 모델에서hasMany를 정의한다
  • 다대다의 경우
  • 두 모델에서belongs ToMany를 정의합니다
  • 수준 관계 정의


    LaravelModel의 정의에 대한 자세한 내용은 다음을 참조하십시오.

    예제


    일대다


    이런 연관성



    모델 정의


    products 테이블에maker_ 포함id가 존재하기 때문에 제품 모델에belongsTo를 정의합니다.
    class Product extends Model
    {
        public function maker()
        {
            return $this->belongsTo('App\Maker');
        }
    }
    
    다른 Maker 모델에서hasMany를 정의합니다.
    class Maker extends Model
    {
        public function products()
        {
            return $this->hasMany('App\Product');
        }
    }
    

    다대다


    이런 연관성



    모델 정의


    두 모델에서 belongsToMany를 정의합니다.
    class Product extends Model
    {
        public function categories()
        {
            return $this->belongsToMany('App\Category');
        }
    }
    
    class Category extends Model
    {
        public function products()
        {
            return $this->belongsToMany('App\Product');
    
    }
    

    좋은 웹페이지 즐겨찾기