真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網站制作重慶分公司

LaravelModel模型關聯(lián)怎么建立

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

我們提供的服務有:成都網站建設、網站制作、微信公眾號開發(fā)、網站優(yōu)化、網站認證、磐安ssl等。為近千家企事業(yè)單位解決了網站和推廣的問題。提供周到的售前咨詢和貼心的售后服務,是有科學管理、有技術的磐安網站制作公司

定義關聯(lián)關系

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

  • 一對一

  • 一對多

  • 多對多

  • 遠程一對多

  • 遠程一對一

  • 一對一(多態(tài)關聯(lián))

  • 一對多(多態(tài)關聯(lián))

  • 多對多

建立模型關聯(lián)

一對一

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

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

Guestinfo model文件:

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

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

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

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

一對多

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

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

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

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

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

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

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

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


實例3:通過關聯(lián)查詢某篇文章的發(fā)表人的姓名

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

實例4:通過關聯(lián)查詢某篇文章的評論信息
創(chuàng)建Comment評論模型:
php artisan make:model Comment
Comment 模型代碼:

class Comment extends Model{
    use HasFactory;
    // 設置Comment模型對應的數(shù)據表
    protected $table = 'comment';
    // 關閉create_time和update_time字段自動管理
    public $timestamps = false;
    // 設置與article的關聯(lián)方法,方法名建議使用被關聯(lián)表的名字
    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模型關聯(lián)怎么建立”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關的知識,可以關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,小編每天都會為大家更新不同的知識點。


分享題目:LaravelModel模型關聯(lián)怎么建立
本文網址:http://weahome.cn/article/ggisph.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部