php的db类库Eloquent单独使用系列(11)- 添加模型属性_PHP_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > PHP > php的db类库Eloquent单独使用系列(11)- 添加模型属性

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

 2017/8/7 17:31:20  xieye  程序员俱乐部  我要评论(0)
  • 摘要:前面的几篇文章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 使用
前面的几篇文章
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)- 多对多关联 - 远程一对多


本系列文章的目的就是脱离laravel环境使用Eloquent,因为它好用
本系列文章所有代码均测试通过。Eloquent版本:5.4.27

本文的目的是模型的额外属性。
首先建表,假设有一个活动表act,每个表有一个地区属性area_id,关联到area表,而area表有一个name字段。

现在我希望活动模型能自动有一个area_name属性


Act.php
class="php" name="code">
<?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;




发表评论
用户名: 匿名