网站首页 laravel框架
laravel--ORM--深入操作-多态关联
发布时间:2016-07-14 08:26查看次数:4817
laravel--ORM--深入操作-多态关联
什么是多态关联? 就是有多重状态了~~~表达能力不行看示例吧!
多态关联应用场景:
示例我们有公司有多个部门有
技术部
设计部
客服部
他们都有一个共同的需要上传图片,文件,这个时间简单的做法是每个部分一个上传表
高级的做法就是多态关联
数据库设计原型:
技术部 id
设计部 id
客服部 id
图片表 ID type_id type
设计部模型关联:
class Shejibu extends Model
{
protected $table ='shejibu';
protected $morphClass = 'shejibu'; //设置多态关联中模拟关系值
public function get_shejibu()
{
return $this->morphMany('App\Http\Model\Tupianbiao', 'type');
数据交叉模型, 字段配置前缀
}
}
图片表模型关联:
class Tupianbiao extends Model
{
protected $table ='tupianbiao';
public function get_type()
{
return $this->morphTo();
}
}
调用示例:
//多态关联
public function to_all(){
$data = Shejibu::find(1)->get_shejibu;
return view('test');
}
}
原生SQL:
select * from `tupianbiao`
where `tupianbiao`.`type_id` = '1' and
`tupianbiao`.`type_id` is not null and
tupianbiao`.`type_type` = 'shejibu'
其他部门差不多一样
关键字词:laravel--ORM--深入操作-多