4.4.8 模型关联
一对一:表与表之间各自只有一条数据相互关联
- hasOne():一般用于主表
- belongsTo():一般用于子表
<?php
namespace App\Model;
use Hyperf\Database\Model\SoftDeletes;
use Hyperf\DbConnection\Model\Model;
/**
* @property int $id
* @property string $merchant_no
* @property string $title
* @property string $desc
* @property int $status
* @property string $meta
* @property string $cdn_addr
* @property \Carbon\Carbon $created_at
* @property \Carbon\Carbon $updated_at
* @property string $deleted_at
*/
class UserActivity extends Model
{
/**
* 表名
* @var string
*/
protected $table = 'user_activity';
...
/**
* 将活动下面的事件一对一关联
* @return \Hyperf\Database\Model\Relations\HasOne
*/
public function event()
{
return $this->hasOne(UserActivityEvent::class, 'activity_id', 'id');
}
}
<?php
namespace App\Controller;
class IndexController extends AbstractController
{
public function index()
{
// 查询出活动信息
$userActivity = \App\Model\UserActivity::query()->find(10012);
// 加载活动下的事件,并且一对一关联
$userActivity->load('event');
return $userActivity;
}
}
输出:
{
"id": 10012,
"merchant_no": "123456",
"title": "title",
"desc": "",
"status": 2,
"meta": {
"cover_pic": "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1591770047788&di=8efc808496c85415054dae40e1a7f06a&imgtype=0&src=http%3A%2F%2Fa0.att.hudong.com%2F56%2F12%2F01300000164151121576126282411.jpg",
"share_pic": "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1591770047788&di=8efc808496c85415054dae40e1a7f06a&imgtype=0&src=http%3A%2F%2Fa0.att.hudong.com%2F56%2F12%2F01300000164151121576126282411.jpg",
"rule": "rule"
},
"cdn_addr": null,
"created_at": "2020-06-10 13:06:50",
"updated_at": "2020-06-17 14:40:39",
"deleted_at": "2020-06-17 14:40:39",
// 下面的就是加载出来的事件内容
"event": {
"id": 200001,
"merchant_no": "123456",
"activity_id": "10012",
"title": "222222111",
"start_time": "2020-06-12 00:00:00",
"end_time": "2020-07-20 23:59:59",
}
}
一对多:某张表关联了另外一张表的多条记录
- hasMany()
`php
<?php
namespace App\Model;
use Hyperf\Database\Model\SoftDeletes;
use Hyperf\DbConnection\Model\Model;
/**
@property int $id
@property string $merchant_no
@property string $title
@property string $desc
@property int $status
@property string $meta
@property string $cdn_addr
@property \Carbon\Carbon $created_at
@property \Carbon\Carbon $updated_at
@property string $deleted_at
/
class UserActivity extends Model
{
/*
<?php
namespace App\Controller;
class IndexController extends AbstractController
{
public function index()
{
// 查询出活动信息
$userActivity = \App\Model\UserActivity::query()->find(10012);
// 加载活动下的事件,并且一对多关联
$userActivity->load('events');
return $userActivity;
}
}
输出
{
"id": 10012,
"merchant_no": "123456",
"title": "title",
"desc": "",
"status": 2,
"meta": {
"cover_pic": "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1591770047788&di=8efc808496c85415054dae40e1a7f06a&imgtype=0&src=http%3A%2F%2Fa0.att.hudong.com%2F56%2F12%2F01300000164151121576126282411.jpg",
"share_pic": "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1591770047788&di=8efc808496c85415054dae40e1a7f06a&imgtype=0&src=http%3A%2F%2Fa0.att.hudong.com%2F56%2F12%2F01300000164151121576126282411.jpg",
"rule": "rule"
},
"cdn_addr": null,
"created_at": "2020-06-10 13:06:50",
"updated_at": "2020-06-17 14:40:39",
"deleted_at": "2020-06-17 14:40:39",
// 下面的就是加载出来的事件内容
"events": [
{
"id": 200001,
"merchant_no": "123456",
"activity_id": "10012",
"title": "222222111",
"start_time": "2020-06-12 00:00:00",
"end_time": "2020-07-20 23:59:59",
},
]
}文档更新时间: 2021-09-24 17:36 作者:赵豪