2020-04-04(laravel一对一)
2020-04-04 本文已影响0人
浪子游剑
一对一:同时操作两张表
一对一关联是一个非常简单的关联关系,例如,一个 User 模型有一个与之关联的 Phone 模型,一个人对应一个手机,一个手机对应一个人!
有User和Admin的基础上。
在User.php中,新建函数并加入该代码
return $this->hasOne('App\Admin','id');
在UserController.php中加入一下代码,便能调用Admins表中的数据
$datas= User::find(1)->Userinfo()->get();
dd($datas)
1、关联只能使用find()函数吗?
答:return $this->hasOne('App\Admin','uid','id');
find()是筛选出与id相同的uid的数据,不单单是只显示一天,只要与id一样的uid都会筛选出来。会显示多条数据。hasOne()显示一条数据,hasMany()显示多条数据。
还能添加wher()来进行限制。
$datas= User::find(1)->UserAdminS()->where('email','jaskolski.carlo@example.net')->get();
2、hasOne中多几个参数是是什么意思?
答:return $this->hasOne('App\Admin','uid','id');存在两个参数则说明,uid与id的值要相同才能关联起来。如果只填一个,那么默认另一个为主表的主键。
步骤(重点)
1、创建模型
php artisan make:model home/Article
php artisan make:model home/Author
2、定义结构代码
//关联相关的表
protected timestamps=false;
3、关联模型的关联方法
分析是谁关联谁,谁是主表,谁是从表
public function author()
{
return $this->hasOne('App\home\Author', 'id', 'author_id');
}
4、怎么使用呢?
$data=\App\home\Article::get();
foreach (key=>$value){
echo $value->id.'<br/>' ;
}