laravel模型关联(一对多)

一对多

例如一个用户会有多条留言,有member会员表和message留言表,一对多关联的定义也是在 Eloquent 模型中写一个方法:

hasMany('App\Http\Models\Message','member_id','id');
    }

}
其中'App\Http\Models\Message'是要关联的模型,member_id是message表(子表)中的外键字段,省略时laravel自动填充为(主表名_id),id是member表(主表)的主键,省略时laravel默认为id。

用法:

1、获取会员[email protected]对应的留言

$message = Member::where('email','[email protected]')->first()->message;

2、获取会员[email protected]对应的一天以前的留言

$message = Member::where('email','[email protected]')->first()
          ->message()->where('created_at','<',date('Y-m-d'))->get();

一对多(反向)

通过一对多的关联可以利用会员表获得会员的留言信息,如果想通过留言信息获得会员信息就需要用到hasMany的反向关联,需要在子级模型(message)中使用 belongsTo 方法定义它,如下所示

belongsTo('App\Http\Models\Member','member_id','id')->withDefault([
            'user_name' => '阿文',
        ]);
    }

}

其中'App\Http\Models\Member'是要关联的模型,member_id是message表(子表)中的外键字段,省略时laravel自动填充为(主表名_id),id是member表(主表)的主键,省略时laravel默认为id。withDefault是主表中没有对应数据时(对应值为null)填充的数据。

用法:

1、获取id为1的留言对应的会员信息

        $member = Message::find(1)->member;

 

你可能感兴趣的:(laravel)