### [](https://octobercms.com/docs/database/relations#defining-relationships)定义关系
模型关系定义为模型类上的属性。定义关系的示例:
~~~
class User extends Model
{
public $hasMany = [
'posts' => 'Acme\Blog\Models\Post'
]
}
~~~
关系像模型本身一样,也可以充当强大的[查询生成器](https://octobercms.com/docs/database/query),可以通过提供功能强大的方法链接和查询功能的函数来访问关系。例如:
~~~
$user->posts()->where('is_active', true)->get();
~~~
也可以将关系作为属性来访问:
~~~
$user->posts;
~~~
> **注意**:默认情况下,所有关系查询都[启用](https://octobercms.com/docs/database/query#in-memory-caching)了[内存中缓存](https://octobercms.com/docs/database/query#in-memory-caching)。该`load($relation)`方法不会强制刷新缓存。要重新加载内存缓存,请使用模型对象上的`reloadRelations()`或`reload()`方法。
### [](https://octobercms.com/docs/database/relations#detailed-relationships)详细定义
每个定义可以是一个数组,其中键是关系名称,值是一个明细数组。detail数组的第一个值始终是相关的模型类名称,而所有其他值都是必须具有键名的参数。
~~~
public $hasMany = [
'posts' => ['Acme\Blog\Models\Post', 'delete' => true]
];
~~~
以下是可用于所有关系的参数:
| 论据 | 描述 |
| --- | --- |
| **order** | 多个记录的排序顺序。 |
| **conditions** | 使用原始的where查询语句过滤关系。 |
| **scope** | 使用提供的范围方法过滤关系。 |
| **push** | 如果设置为false,则不会通过`push`,默认值:true保存此关系。 |
| **delete** | 如果设置为true,则如果删除主要模型或破坏关系,则将删除相关模型,默认值:false。 |
| **count** | 如果设置为true,则结果`count`仅包含用于计数关系的列,默认值:false。 |
使用**顺序**和**条件的**示例过滤器:
~~~
public $belongsToMany = [
'categories' => [
'Acme\Blog\Models\Category',
'order' => 'name desc',
'conditions' => 'is_active = 1'
]
];
~~~
使用**范围的**示例过滤器:
~~~
class Post extends Model
{
public $belongsToMany = [
'categories' => [
'Acme\Blog\Models\Category',
'scope' => 'isActive'
]
];
}
class Category extends Model
{
public function scopeIsActive($query)
{
return $query->where('is_active', true)->orderBy('name', 'desc');
}
}
~~~
使用**count的**示例过滤器:
~~~
public $belongsToMany = [
'users' => ['Backend\Models\User'],
'users_count' => ['Backend\Models\User', 'count' => true]
];
~~~
- 基本说明
- 基本操作
- October cms 安装
- 后台控制器路径
- 图标
- 获取安装网上的插件/主题
- 插件构造器使用
- 定时任务
- October后台控制器
- vscode编辑器
- ajax操作
- 使用
- ajax更新组件
- ajax属性API
- JavaScript API
- ajax综合使用
- 主题
- 多语言主题
- 安装市场主题
- 主题程序处理
- 主题
- 页面
- 部件
- 布局
- 内容
- 组件
- 媒体
- 主题表单操作
- 表单使用
- 表单后端程序处理
- 插件
- 自定义插件
- 插件说明
- 插件导航条
- 插件数据库设置
- 插件的设置管理
- 插件的配置文件config
- 组件
- app服务
- app容器
- 扩展行为
- 缓存
- Collection类
- Lazy Collections
- Collection方法
- 助手函数
- 数组助手函数
- 路径助手函数
- 玄乐助手函数
- 其他助手函数
- 错误与记录
- 事件处理
- HTML页面
- 文件与目录操作
- 散列和加密
- 邮件
- 邮件内容
- 邮件发送
- 分页
- 模板解析器
- 动态解析器语法
- 队列消息
- 请求与输入
- 响应
- 视图
- 路由器
- 配置
- 验证操作
- 处理错误消息
- 错误消息与视图
- 可用的验证规则
- 有条件的验证规则
- 验证数组
- 错误消息
- 自定义验证规则
- 模型操作
- 定义模型与其属性
- 检索模型
- 插入与更新
- 删除模型
- 查询范围
- 事件操作
- 关联操作
- 定义关系
- 关系类型
- 多肽关系
- 关系查询
- 渴望加载
- 插入模型
- 数据库操作
- 基本用法
- 数据表结构
- 查询连贯操作
- 结果检索
- select子句
- 插入更新
- where子句
- 排序,分组,限制和偏移
- 文件附件
- Collection操作
- 属性操作
- 系列化json
- 数据库属性
- 数据库行为
- 控制器
- 后台控制器定义
- 后台页面
- 后台组件
- 后台表单
- 表单组件
- 表单视图
- 表单行为
- 后台列表
- 列表行为
- 列表过滤器
- 可用列类型
- 关系行为
- 关系行为类型
- 扩展关系行为
- 列表排序操作
- 导入导出操作
- 用于与权限
- corlate模板修改
- 修改顶部导航
- laravel问题
- 控制器不存在
- 控制器
- 路由组
- laravel笔记
- laravel 安装
- 伪静态配置
- 依赖注入 & 控制器
- 中间件
- 路由文件
- 视图