`
xieye
  • 浏览: 832618 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

php的db类库Eloquent单独使用系列(11)- 添加模型属性

    博客分类:
  • PHP
阅读更多
我的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;




0
0
分享到:
评论

相关推荐

    Laravel开发-eloquent-extended-cast-model

    Eloquent-Extended-Cast-Model 是一个扩展库,它增强了Eloquent模型的特性,允许开发者定义自定义的类型转换,从而能够更加灵活地管理和操作数据。 Eloquent ORM的核心概念包括模型(Model)、迁移(Migration)、...

    Laravel开发-eloquent-uuid-for-key

    2. **配置模型**:在模型类中,我们需要覆盖`$keyType`和`$incrementing`属性,告知Eloquent使用字符串类型的主键而不是默认的整数类型。同时,可以在`boot`方法中定义主键生成策略: ```php use Illuminate\...

    Laravel开发-eloquent-single-state-marking-store

    "Laravel开发-eloquent-single-state-marking-store"是一个专为Laravel设计的扩展,旨在支持单一状态标记存储,其灵感来源于Symfony的工作流程组件。这个项目的目标是帮助开发者更好地管理和跟踪对象的状态,特别是...

    Laravel开发-eloquent-extended-cast-model .zip

    这个压缩包“Laravel开发-eloquent-extended-cast-model .zip”很可能包含了一些关于如何扩展Eloquent模型的自定义类型转换(casts)的教程或示例代码。 Eloquent的模型类与数据库表一一对应,每个模型实例代表表中...

    Laravel开发-eloquent-single-table-inheritance

    - 使用`morphTo`或`belongsTo`关系来定义与父模型的关系,这使得子模型可以访问到`type`字段。 3. **实例化和查询**: - 当从数据库中查询数据时,Eloquent会检查`type`字段,然后自动创建对应的模型实例。 - ...

    Laravel开发-eloquent-model-generator

    Eloquent-Model-Generator工具则简化了在Laravel5项目中创建Eloquent模型的过程,它能根据现有的数据库结构自动生成对应的模型文件,极大地提高了开发效率。 首先,Eloquent Model是Laravel中的数据访问层,每个...

    Laravel开发-eloquent-log-lazy-loading

    默认情况下,Eloquent模型会自动使用延迟加载。例如,如果我们有一个`User`模型,它有一对多的`posts`关系,我们可以通过以下方式获取用户及其文章: ```php $user = User::find(1); foreach ($user-&gt;posts as $...

    Laravel开发-eloquent-base-model

    "Laravel开发-eloquent-base-model" 主题聚焦于Eloquent ORM中的基础模型(Base Model),它是所有自定义模型类的基类,为开发者提供了许多便利的功能和接口。 Eloquent Base Model位于`Illuminate\Database\...

    Laravel开发-eloquent-mongodb-repository

    "Laravel开发-eloquent-mongodb-repository"的主题就是关于如何在Laravel中利用Eloquent ORM来与MongoDB进行交互的实践教程。 首先,我们需要安装Jenssegers/Laravel-MongoDB扩展包,这个扩展提供了Eloquent模型对...

    ros2-eloquent-20191122-windows-release-amd64.zip

    ROS是一个用于在不同进程间匿名的发布、订阅、传递信息的中间件。 ROS2系统的核心部分是ROS网络(ROS Graph)。ROS网络是指在ROS系统中不同的节点间相互通信的连接关系。 ROS Graph这里翻译成了ROS网络,因为我觉得...

    Laravel开发-eloquent-state-machine

    在Laravel框架中,Eloquent ORM(对象关系映射)是用于数据库操作的强大工具,而...通过`eloquent-state-machine-master`这个项目,我们可以学习并实践如何在Laravel项目中有效地集成和使用Eloquent State Machine。

    Laravel开发-eloquent-sortable

    "eloquent-sortable"库是基于Eloquent的,它添加了一个特性,使模型可以具有排序字段,如`sort_order`。这通常是一个整数值,用于表示记录的顺序。例如,如果我们有一个博客系统,文章可以按发布顺序排列,那么`sort...

    php一些比较常用类库及例子

    以上只是PHP开发中常用类库的一部分,实际开发中还有更多优秀的类库,如Laravel的Eloquent ORM、Guzzle HTTP客户端库等,它们极大地提高了开发效率和代码质量。了解并熟练使用这些类库,将使你的PHP开发工作更加...

    Laravel开发-laravel-eloquent-mysqli

    总之,`laravel-eloquent-mysqli` 项目旨在帮助开发者了解和实践在 Laravel 中使用 mysqli 驱动进行数据库操作,这对于那些需要充分利用 MySQL 扩展特性的项目来说,是一个有价值的资源。在实际开发中,根据项目需求...

    Laravel开发-eloquent-postgres-uuids

    本项目"Laravel开发-eloquent-postgres-uuids"专门探讨了如何在PostgreSQL数据库中使用UUID作为Eloquent模型的主键。 首先,我们要了解Eloquent ORM,它是Laravel框架的核心部分,为开发者提供了简洁、优雅的方式来...

    eloquent-sortable, Eloquent模型的可以排序行为.zip

    eloquent-sortable, Eloquent模型的可以排序行为 Eloquent模型的排序行为 这个包提供了一个特性,它向一个有说服力的模型添加了可以排序的行为。模型新记录的order列的值由模型 1的所有记录的order列的最大值决定。...

    Laravel开发-eloquent-custom

    "Laravel开发-eloquent-custom"这个主题,正是关于如何在Eloquent基础上进行定制化开发,以适应特定项目需求的深入探讨。 首先,了解Eloquent的基本用法至关重要。Eloquent允许开发者定义模型(Model),每个模型...

    eloquent-model-generator:雄辩的模型生成器

    composer require krlove/eloquent-model-generator --dev 步骤2.注册GeneratorServiceProvider : 'providers' =&gt; [ // ... Krlove \ EloquentModelGenerator \ Provider \ GeneratorServiceProvider ::class, ...

    Laravel开发-eloquent-search-map

    composer require arcanedev/eloquent-search-map ``` 然后,在你的模型中引入并使用`Arcanedev\\Searchable\\Searchable` Trait: ```php use Arcanedev\\Searchable\\Searchable; class YourModel extends ...

Global site tag (gtag.js) - Google Analytics