我的代码使用:
返回Laravel$data = DB::table('sometable')->select('id')->get();
的第一行
$row = $data->first();
然后我可以使用:
返回id$row->id;
我现在如何将一个带有'moredata'键的数组添加到该行集合对象中,以便稍后在代码中进行引用?我试过了:
$row->put('moredata', $moredata);
$ moredata是填充数组,'moredata'不是表中的字段。 Laravel抛出错误'调用未定义的方法stdClass :: put()'。我可以转换为数组并简单地扩展数组,只是想知道是否可以保留Laravel集合结构?
答案 0 :(得分:1)
您可以直接在对象上设置属性。
$row = DB::table('sometable')->select('id')->first();
$row->moredata = $moredata;
此外,如果您只需要一条记录,请使用查询构建器上的first
功能。否则,您将在数据库中查询所有记录并过滤内存中的第一个。
答案 1 :(得分:0)
<?php
$appends = ['moredata']
function getMoredataAttribute() {
return ['data' => '...data...'];
}
将此放入您的模型
答案 2 :(得分:0)
试试这个:
$data = DB::table('sometable')->select('id')->first();
$data->moredata = $moredata;
或
$data = DB::table('sometable')->select('id')->get();
$data = $data[0];
$data->moredata = $moredata;
答案 3 :(得分:0)
您可以附加数据:https://laravel.com/docs/5.4/eloquent-serialization#appending-values-to-json
有时,在将模型转换为数组或JSON时,您可能希望这样做 添加您的相应列中没有相应列的属性 数据库中。