`
xieye
  • 浏览: 804228 次
  • 性别: 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
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics