duanfu7004 2016-10-11 06:35
浏览 94

Laravel 5.3 $附加不起作用

Below is the code for model

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Product extends Model
{
    protected $appends = [
        "desc"
    ];

    protected $fillable = ['id'];

    public function getDescAttribute()
    {
        return strip_tags( $this->attributes['description'] );
    }
}

So now when i do

$product = Product::first();

It doesn't return desc field in the $product, though when i do $product->desc it returns the result, but i want that result to be appended in the model itself.

The following code gives me error

$product = Product::first()->get(['desc']);

It runs

Select desc from products...

But as the desc is not there i am getting error.

Is anything I'm doing wrong?

  • 写回答

1条回答 默认 最新

  • doupu1957 2016-10-11 12:37
    关注

    Fields that you add to $appends array are only appended when object is serialized to array/JSON. Otherwise it doesn't make sense to define this attribute until it's really needed - that's why you're getting the value when you access $product->desc. It's done to save unnecessary operations - calculating the value of a custom attribute could involve some heavy operations and is delayed till it's really needed.

    评论

报告相同问题?

悬赏问题

  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?