如何将数组添加到Laravel db结果行?

时间:2017-09-01 11:19:23

标签: laravel

我的代码使用:

返回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集合结构?

4 个答案:

答案 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时,您可能希望这样做   添加您的相应列中没有相应列的属性   数据库中。