我的模型上有一个ID字段,该字段由6f7fb019-1a57-4beb-916a-8605868c19a2等字母数字字符串组成
在Blade中,我尝试{{ $var->ID }}
即使我将其包装在{!! !!}
但是,当我将文字字符串用双引号引起来时,例如{{ " 6f7fb019-1a57-4beb-916a-8605868c19a2" }}
,一切都很好。
刀片模板代码:
@foreach($work_requests as $work_request)
<tr>
<th scope="row">{{$work_request->ID}}</th>
<td>{{$work_request->STATUS}}</td>
<td>{{$work_request->created}}</td>
</tr>
@endforeach
dd
中的原始模型
#attributes: array:4 [▼
"ID" => "6f7fb019-1a57-4beb-916a-8605868c19a2"
"JSON" => ""
"STATUS" => " [ CONFIDENTIAL ] "
"created" => 1550623543
]
来自控制器:
public function index()
{
$work_requests = WorkRequest::orderby('created','desc')->paginate(25);
dd($work_requests);
return view('workrequests.index')->with('work_requests',$work_requests);
}
因此对于这些值,我得到了相应的打印结果:
答案 0 :(得分:2)
尝试使用紧凑型,但是在变量名上使用它(请注意语法):
return view('workrequests.index', compact ('work_requests'));
对于从刀片出来的数字-这可能是因为默认情况下,Laravel中的主键强制转换为int
,如:
(int) "6f7fb019-1a57-4beb-916a-8605868c19a2" == 6
它仍然是一个字符串,但是如果您通过模型的ID调用它,它将通过__get()方法,并成为一个int。您可以通过casting it in the model告诉Laravel确保它是字符串:
protected $casts = ['id' => 'string']
;
您也可以直接转到id函数,并告诉Laravel不要递增,这可能比$casts
变量更精确:
public $incrementing = false;
HTH