2016-10-11 4 views
3
아래

<?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']); 
    } 
} 

그래서 지금 내가 할 때 모델의 코드는 작동하지 않는 추가 5.3

$product = Product::first(); 

그것은 내가 생각하면, $ 제품에서 내림차순 필드를 반환하지 않습니다 $ product-> desc 결과를 반환하지만 그 결과가 모델 자체에 추가되기를 원합니다.

다음 코드

그것은

Select desc from products... 

를 실행하지만 DESC가 아니므로 내가 오류가 발생하고 나에게 오류

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

을 제공합니다.

내가 잘못하고있는 것이 있습니까? 객체가 배열/JSON에 직렬화 때 $가 배열을 추가하면 에 추가

+0

보호 된 $ visible = [ 'desc'];'을 추가하면 어떻게됩니까? – Neat

+0

다음'$ product = Product :: first();'는 팅커에 열이없는'App \ Product {# 729}'를 보여줍니다 – crazy1337

답변

1

필드 만 추가됩니다. 그렇지 않으면 실제로이 특성이 필요할 때까지이 특성을 정의하는 것이 의미가 없습니다. 즉, $ product-> desc에 액세스 할 때 값을 얻는 것입니다. 불필요한 작업을 절약하기 위해 수행되었습니다. 사용자 정의 속성의 값을 계산할 때 작업이 많이 필요할 수 있고 실제로 필요할 때까지 지연 될 수 있습니다.