1, 定义一对一关联hasOne()
例如: Article 模型中 关联category 模型
//关联分类一对一
//hasOne(‘关联模型名’,‘外键名’,‘主键名’,[‘模型别名定义’],‘join类型’);
public function category(){
return $this->hasOne('category', 'categoryid', 'categoryid');
}
2, 关联查找
a/ 获取关联模型中的某个字段值
$category_name = Article::get(1)->category->category_name;
b/ 根据 关联表 的查询条件查询当前模型的数据
$data = Article::hasWhere( 'category', [ 'category_name' => '测试'])->find();
c/ 关联预载入
//关联预载入分类表和用户表的全部信息
$data0 = Article::field('id,categoryid,title_name')->with( 'category,user')->select();
//关联预载入分类表部分字段信息
$data = Article::field( 'id,categoryid,title_name')->with([ 'category' => function ($query) {
$query->field( 'categoryid,category_name');
}])->select();
//echo '<pre>';print_r($data->toArray());
/* Array
(
[0] => Array
(
[id] => 1
[categoryid] => 1
[title_name] => 测试1
[category] => Array
(
[category_name] => a分类
[categoryid] => 1
)
)
[1] => Array
(
...
)
)*/
3, 相对关联
例如: category 模型中 关联Article 模型
//定义相对关联
public function article(){
return $this->belongsTo( 'article', 'categoryid', 'categoryid');
}
根据分类来获取文章模型的信息:
$user = Category::get(1)->article->id;