我的Eloquent单独使用系列文章
php的db类库Eloquent单独使用系列(1)
php的db类库Eloquent单独使用系列(2) - 分页
php的db类库Eloquent单独使用系列(3) - sql日志
php的db类库Eloquent单独使用系列(4)- 事件监听
php的db类库Eloquent单独使用系列(5)- 模型转数组
php的db类库Eloquent单独使用系列(6)- 一对一关联
php的db类库Eloquent单独使用系列(7)- 一对多关联
php的db类库Eloquent单独使用系列(8)- 多对多关联
php的db类库Eloquent单独使用系列(9)- 多对多关联 - 表关联自身
php的db类库Eloquent单独使用系列(10)- 多对多关联 - 远程一对多
php的db类库Eloquent单独使用系列(11)- 多对多关联 - 添加模型属性
php的db类库Eloquent单独使用系列(12)- 结果集模型转数组 - 2
本系列文章的目的就是脱离laravel环境使用Eloquent,因为它
好用。
本系列文章所有代码均测试通过。Eloquent版本:5.4.27
本文的目的是模型的额外属性。
首先建表,假设有一个活动表act,每个表有一个地区属性area_id,关联到area表,而area表有一个name字段。
现在我希望活动模型能自动有一个area_name属性
则
Act.php
<?php
namespace app\model;
use \Illuminate\Database\Eloquent\Model;
/**
* 活动模型类
*/
class Act extends Model
{
protected $table = 'act';
public $timestamps = false;
protected $appends = ['area_name']; // 这里添加附加属性
protected $hidden = ['city']; //如果不这么写,会把city模型加入
// 自定义属性
// 此方法命名很讲究,下划线转驼峰大小写。
// 获取属性时,使用$act->area_name
public function getAreaNameAttribute()
{
return $this->city->name; // name属性是city表里的。
}
// 这是常规的定义,因为一个城市会关联多个活动
public function city()
{
return $this->belongsTo('app\model\Area', 'area_id', 'id');
}
}
客户端代码
$act = \app\model\Act:find(1);
echo $act->area_name;
分享到:
相关推荐
Eloquent-Extended-Cast-Model 是一个扩展库,它增强了Eloquent模型的特性,允许开发者定义自定义的类型转换,从而能够更加灵活地管理和操作数据。 Eloquent ORM的核心概念包括模型(Model)、迁移(Migration)、...
2. **配置模型**:在模型类中,我们需要覆盖`$keyType`和`$incrementing`属性,告知Eloquent使用字符串类型的主键而不是默认的整数类型。同时,可以在`boot`方法中定义主键生成策略: ```php use Illuminate\...
"Laravel开发-eloquent-single-state-marking-store"是一个专为Laravel设计的扩展,旨在支持单一状态标记存储,其灵感来源于Symfony的工作流程组件。这个项目的目标是帮助开发者更好地管理和跟踪对象的状态,特别是...
这个压缩包“Laravel开发-eloquent-extended-cast-model .zip”很可能包含了一些关于如何扩展Eloquent模型的自定义类型转换(casts)的教程或示例代码。 Eloquent的模型类与数据库表一一对应,每个模型实例代表表中...
- 使用`morphTo`或`belongsTo`关系来定义与父模型的关系,这使得子模型可以访问到`type`字段。 3. **实例化和查询**: - 当从数据库中查询数据时,Eloquent会检查`type`字段,然后自动创建对应的模型实例。 - ...
Eloquent-Model-Generator工具则简化了在Laravel5项目中创建Eloquent模型的过程,它能根据现有的数据库结构自动生成对应的模型文件,极大地提高了开发效率。 首先,Eloquent Model是Laravel中的数据访问层,每个...
默认情况下,Eloquent模型会自动使用延迟加载。例如,如果我们有一个`User`模型,它有一对多的`posts`关系,我们可以通过以下方式获取用户及其文章: ```php $user = User::find(1); foreach ($user->posts as $...
"Laravel开发-eloquent-base-model" 主题聚焦于Eloquent ORM中的基础模型(Base Model),它是所有自定义模型类的基类,为开发者提供了许多便利的功能和接口。 Eloquent Base Model位于`Illuminate\Database\...
"Laravel开发-eloquent-mongodb-repository"的主题就是关于如何在Laravel中利用Eloquent ORM来与MongoDB进行交互的实践教程。 首先,我们需要安装Jenssegers/Laravel-MongoDB扩展包,这个扩展提供了Eloquent模型对...
ROS是一个用于在不同进程间匿名的发布、订阅、传递信息的中间件。 ROS2系统的核心部分是ROS网络(ROS Graph)。ROS网络是指在ROS系统中不同的节点间相互通信的连接关系。 ROS Graph这里翻译成了ROS网络,因为我觉得...
在Laravel框架中,Eloquent ORM(对象关系映射)是用于数据库操作的强大工具,而...通过`eloquent-state-machine-master`这个项目,我们可以学习并实践如何在Laravel项目中有效地集成和使用Eloquent State Machine。
"eloquent-sortable"库是基于Eloquent的,它添加了一个特性,使模型可以具有排序字段,如`sort_order`。这通常是一个整数值,用于表示记录的顺序。例如,如果我们有一个博客系统,文章可以按发布顺序排列,那么`sort...
以上只是PHP开发中常用类库的一部分,实际开发中还有更多优秀的类库,如Laravel的Eloquent ORM、Guzzle HTTP客户端库等,它们极大地提高了开发效率和代码质量。了解并熟练使用这些类库,将使你的PHP开发工作更加...
总之,`laravel-eloquent-mysqli` 项目旨在帮助开发者了解和实践在 Laravel 中使用 mysqli 驱动进行数据库操作,这对于那些需要充分利用 MySQL 扩展特性的项目来说,是一个有价值的资源。在实际开发中,根据项目需求...
本项目"Laravel开发-eloquent-postgres-uuids"专门探讨了如何在PostgreSQL数据库中使用UUID作为Eloquent模型的主键。 首先,我们要了解Eloquent ORM,它是Laravel框架的核心部分,为开发者提供了简洁、优雅的方式来...
eloquent-sortable, Eloquent模型的可以排序行为 Eloquent模型的排序行为 这个包提供了一个特性,它向一个有说服力的模型添加了可以排序的行为。模型新记录的order列的值由模型 1的所有记录的order列的最大值决定。...
"Laravel开发-eloquent-custom"这个主题,正是关于如何在Eloquent基础上进行定制化开发,以适应特定项目需求的深入探讨。 首先,了解Eloquent的基本用法至关重要。Eloquent允许开发者定义模型(Model),每个模型...
composer require krlove/eloquent-model-generator --dev 步骤2.注册GeneratorServiceProvider : 'providers' => [ // ... Krlove \ EloquentModelGenerator \ Provider \ GeneratorServiceProvider ::class, ...
composer require arcanedev/eloquent-search-map ``` 然后,在你的模型中引入并使用`Arcanedev\\Searchable\\Searchable` Trait: ```php use Arcanedev\\Searchable\\Searchable; class YourModel extends ...