一對一:同時操作兩張表
一對一關(guān)聯(lián)是一個非常簡單的關(guān)聯(lián)關(guān)系,例如,一個 User 模型有一個與之關(guān)聯(lián)的 Phone 模型,一個人對應(yīng)一個手機,一個手機對應(yīng)一個人!
有User和Admin的基礎(chǔ)上。
在User.php中,新建函數(shù)并加入該代碼
return $this->hasOne('App\Admin','id');
在UserController.php中加入一下代碼,便能調(diào)用Admins表中的數(shù)據(jù)
$datas= User::find(1)->Userinfo()->get();
dd($datas)
1、關(guān)聯(lián)只能使用find()函數(shù)嗎?
答:return $this->hasOne('App\Admin','uid','id');
find()是篩選出與id相同的uid的數(shù)據(jù),不單單是只顯示一天,只要與id一樣的uid都會篩選出來。會顯示多條數(shù)據(jù)。hasOne()顯示一條數(shù)據(jù),hasMany()顯示多條數(shù)據(jù)。
還能添加wher()來進行限制。
$datas= User::find(1)->UserAdminS()->where('email','jaskolski.carlo@example.net')->get();
2、hasOne中多幾個參數(shù)是是什么意思?
答:return $this->hasOne('App\Admin','uid','id');存在兩個參數(shù)則說明,uid與id的值要相同才能關(guān)聯(lián)起來。如果只填一個,那么默認另一個為主表的主鍵。
步驟(重點)
1、創(chuàng)建模型
php artisan make:model home/Article
php artisan make:model home/Author
2、定義結(jié)構(gòu)代碼
//關(guān)聯(lián)相關(guān)的表
protected timestamps=false;
3、關(guān)聯(lián)模型的關(guān)聯(lián)方法
分析是誰關(guān)聯(lián)誰,誰是主表,誰是從表
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/>' ;
}