中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Laravel Model模型關聯怎么建立

發布時間:2022-05-26 14:00:20 來源:億速云 閱讀:141 作者:iii 欄目:編程語言

這篇文章主要介紹“Laravel Model模型關聯怎么建立”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“Laravel Model模型關聯怎么建立”文章能幫助大家解決問題。

定義關聯關系

數據庫表通常相互關聯。
例如,一篇博客文章可能有許多評論,或者一個訂單對應一個下單用戶。Eloquent 讓這些關聯的管理和使用變得簡單,并支持多種類型的關聯:常見的為前三種,在此我們也只講解前三種關聯

  • 一對一

  • 一對多

  • 多對多

  • 遠程一對多

  • 遠程一對一

  • 一對一(多態關聯)

  • 一對多(多態關聯)

  • 多對多

建立模型關聯

一對一

示例:
兩個數據表:guest 用戶表和guestinfo用戶信息
其中guest表中的主鍵id字段對應著guestinfo中的外鍵user_id字段
首先創建兩個model文件:
php artisan make:model Guest
php artisan make:model Guestinfo
Guest model文件:

class Guest extends Model{
    use HasFactory;
    // 設置Guest模型對應的數據表
    protected $table = 'guest';
    // 關閉create_time和update_time字段自動管理
    public $timestamps = false;
    // 設置與guestinfo的關聯方法,方法名建議使用被關聯表的名字
    public function guestinfo(){
    // hasOne(被關聯的名命空間,關聯外鍵,關聯的主鍵)
        return $this->hasOne('App\Models\Guestinfo','user_id','id');
    }}

Guestinfo model文件:

class Guestinfo extends Model{
    use HasFactory;
    // 設置Guest模型對應的數據表
    protected $table = 'guestinfo';
    // 關閉create_time和update_time字段自動管理
    public $timestamps = false;
    // 設置與guestinfo的關聯方法,方法名建議使用被關聯表的名字
    public function guest(){
    // hasOne(被關聯的名命空間,關聯外鍵,關聯的主鍵)
        return $this->belongsTo('App\Models\Guest','user_id','id');
    }}

創建一個控制器將兩個model文件連接起來:
php artisan make:controller Controllers
內容:

class Controllers extends Controller{
    //
    public function getOne(){
    // 通過關聯方法獲取guest表中username = admin記錄在guestinfo對應的記錄
    // ->guestinfo 是Guest模型文件里面定義的guestinfo方法
        $guestInfo = Guest::firstWhere('username','admin')->guestinfo;
	// 通過關聯方法獲取guestinfo中id=3 記錄在guest表中的對應記錄
        $data = Guestinfo::find(3)->guest;
        
        dump($guestInfo);
        // 將模型轉換成數組
        dump($data->toArray());
    }}

創建控制器的路由:
Route::get('relative/getOne',[Controllers::class,'getOne']);

一對多

示例:
兩個數據表:guest 用戶表和article文章表
其中guest表中的主鍵id字段對應著guestinfo中的外鍵user_id字段
創建articlemodel文件:
php artisan make:model Article

class Article extends Model{
    use HasFactory;
    // 設置Guest模型對應的數據表
    protected $table = 'article';
	// 關閉create_time和update_time字段自動管理    
    public $timestamps = false;
    public function guest(){
    // 設置與guest的關聯方法,與一對一的從表設置一樣
        return $this->belongsTo('App\Models\April\Guest','user_id','id');
    }}

Guest model文件中添加一個article 方法

class Guest extends Model{
    use HasFactory;
    // 設置Guest模型對應的數據表
    protected $table = 'guest';
    // 關閉create_time和update_time字段自動管理
    public $timestamps = false;
    // 設置與guestinfo的關聯方法,方法名建議使用被關聯表的名字
    public function guestinfo(){
    // hasOne(被關聯的名命空間,關聯外鍵,關聯的主鍵)
        return $this->hasOne('App\Models\Guestinfo','user_id','id');
    }
    // 設置與article的關聯:hasmany 有很多
     public function article(){
        return $this->hasMany('App\Models\April\Article','user_id','id');
    }}

Controllers 控制器文件中測試一下:
實例1:查詢某一個用戶發表的所有文章:

 		// 查詢某個用戶發表的所有文章
        $article = Guest::find(1)->article;
        // 返回為數據集,需要遍歷
        foreach ($article as $v){
            dump($v->toArray());
        }

實例2:查詢某個用戶最新發表的一篇文章

		// 查詢某個用戶最新發表的一篇文章
        // article()生成一個構造器,可以進行篩選
        $article = Guest::find(1)->article()->orderby('created_at','desc')->first();
        dump($article->toArray());


實例3:通過關聯查詢某篇文章的發表人的姓名

		//  通過article和guest關聯,再通過guest關聯的guestinfo獲取姓名
        $name = Article::find(2)->guest->guestinfo;
        dump($name->name);

實例4:通過關聯查詢某篇文章的評論信息
創建Comment評論模型:
php artisan make:model Comment
Comment 模型代碼:

class Comment extends Model{
    use HasFactory;
    // 設置Comment模型對應的數據表
    protected $table = 'comment';
    // 關閉create_time和update_time字段自動管理
    public $timestamps = false;
    // 設置與article的關聯方法,方法名建議使用被關聯表的名字
    public function article(){
        return $this->belongsTo('App\Models\April\Article','article_id','id');
    }}

在Article模型中添加方法comment:

public function comment(){
        return $this->hasMany('App\Models\April\Comment','article_id','id');
    }

controller控制器代碼:

$info = Article::find(2)->comment;
        foreach ($info as $v){
            dump($v->toArray());
        }

關于“Laravel Model模型關聯怎么建立”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

永兴县| 渝中区| 常山县| 应用必备| 临邑县| 全椒县| 湘阴县| 金昌市| 怀宁县| 本溪市| 铜陵市| 吉安市| 彰武县| 贺州市| 柳林县| 株洲市| 张家川| 盘锦市| 富平县| 苏尼特右旗| 宜春市| 北海市| 子洲县| 长阳| 连云港市| 乐昌市| 嘉禾县| 南川市| 兰州市| 三河市| 遵化市| 保定市| 中超| 韩城市| 吴川市| 株洲市| 新田县| 连江县| 富源县| 铜鼓县| 陇南市|