天天看點

laravel表連接配接一對一,多對一和多對多關系

區分父表與子表

1.”一”的是父表

2.”多”的一方是子表

如何處理一對多關系

在子表中建一個字段(外鍵)指向父表

如何處理多對多關系

建立一張中間表,将”多對多”關系轉化為”一對多”

一對一hasOne

<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class UserModel extends Model
{
    public function Userinfo()
    {
        /*
         * @param [string] [name] [需要關聯的模型類名]
         * @param [string] [foreign] [參數一指定資料表中的字段]
         * */
        return $this->hasOne(UserInfo::class,'user_id');
    }
 }
           

一對多hasMany

<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class UserModel extends Model
{
    public function article()
    {
        return $this->hasOne(Article::class,'user_id');
    }
 }
           

多對一 belongTo

<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class UserModel extends Model
{
    public function city()
    {
        return $this->belongTo(City::class,'city_id');
    }
 }
           

多對多 belongToMany

<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class UserModel extends Model
{
    public function Role(){
        /*
         * 第一個參數:要關聯的表對應的類
         * 第二個參數:中間表的表名
         * 第三個參數:目前表跟中間表對應的外鍵
         * 第四個參數:要關聯的表跟中間表對應的外鍵
         * */
        return $this->belongsToMany('App\Role','user_role','user_id','role_id');
    }
}