laravel中的With()方法是什么?

时间:2019-08-14 16:36:28

标签: php laravel eloquent

我已经参考了一些在线参考资料,以了解在laravel中使用With方法做什么,但仍然不了解。 Laravel with(): What this method does?

有些代码我不理解,我可以知道a,b,c,d,e,f指的是什么吗?

 $example = Test::with('a', 'b', 'c',
            'd', 'e', 'f');

1 个答案:

答案 0 :(得分:2)

让我们给您直接的例子。如果您有 user 表,并且该用户与多个表相关,对吗?它也属于多个表吗?

  

在这里,我带四个桌子。

城市

  1. id
  2. 名称

用户

  1. id
  2. 名称
  3. city_id

用户个人资料

  1. id
  2. user_id
  3. 地址
  4. 电话

用户文档

  1. id
  2. user_id
  3. document_name
  4. 类型

  

用户belongsTo一个城市,

     

用户has one个人资料

     

用户has many文档。

现在,在用户模型中,您将定义与每个表的关系。

User.php

//User belongs To Country
public function city(){
    return $this->belongsTo('App\City','city_id','id')->withDefault();
}


//User hasone profile
public function profile(){
    return $this->hasOne('App\Profile','user_id','id')->withDefault();
}

//User hasmany document
public function documents(){
    return $this->hasMany('App\UserDocument','user_id','id')->withDefault();
}

现在,如果您想访问控制器中的所有数据,则可以使用 with()

控制器

App\User::with('country','profile','documents')->get();

您将以

的形式获取对象中的所有数据

用户

id

名称

  • {城市数据}

  • {个人资料}

  • {documents}


此外,您还可以获取多个模型嵌套关系,例如city属于州,并且如果要使用city获取州数据,

User::with('city.state','profile','documents')->get(): 
//define state relationship in city model you'll get state data with city as well.
  

您也可以在with()

中添加条件
User::with(['document'=>function ($q){
    $q->where('type','pdf');
}]);