如何在laravel中将2个表数据放入单变量数组中?

问题描述 投票:0回答:5

我有 2 个表,用户和子管理员认为用户有 3 列,子管理员有 2 列,我想将 3+2(5 列)数据放入单个可验证数组中

我想使用的技术是,在用户表中,我有一个id,它与subadmin表中的sub_admin_id(列)相同,我如何使用雄辩模型首先将id与sub_admin_id链接起来,然后进入单个查询,在单个可验证中获取5列数组

这里我用来获取数据

$subadmindata = User::find($id)->get(); // [column1 ,column2 ,column3 ]
$subadmindata1 = SubAdmin::find($id)->get(); // [column1 ,column2 ]

输出应该是

$data = // [column1 ,column2 ,column3 , column4 ,column5 ]

注意我不想使用数组合并或组合方法我想使用雄辩模型进行学习

php laravel model-view-controller eloquent merging-data
5个回答
1
投票

你可以像这样使用

concat

$subadmindata = User::find($id)->get();
$subadmindata1 = SubAdmin::find($id)->get(); // it will return array of collections

$data = $subadmindata->concat($subadmindata1);

注意当您在

get
之后使用
find
时,它会停止其工作,因此无需在此处
find


1
投票

get()
方法将为您提供一个集合而不是数组,因此您可以按如下方式合并两个集合。

   $subadmindata = User::find($id)->get();
   $subadmindata1 = SubAdmin::find($id)->get();

    $data = $subadmindata->merge($subadmindata1);

1
投票

您不能将 find 与 get 一起使用(假设您需要一个结果而不是所有用户)。尝试这个。但看起来你需要首先正确地建立关系。无论如何,快速回答如下。

$userCols = User::select('column1','col2','col3')->find($id);
$subAdminCols = SubAdmin::select('col4','col5')->find($id);
$cols = array_merge($userCols->toArray(), $subAdminCols->toArray());

0
投票

试试这个 在用户模型中

public function subadmin(){
        return $this->hasOne(SubAdmin::class,'sub_admin_id');
    }

在控制器中

    $sub_admins = User::find($id);
dd($sub_admins->subadmin->sub_admin_id)

   

0
投票

您可以使用 php

...
运算符来推送数据

这样的例子

$subadmindata = User::find($id)->get()->toArray(); // [column1 ,column2 ,column3 ]
$subadmindata1 = SubAdmin::find($id)->get()->toArray(); // [column1 ,column2 ]
array_push($subadmindata, ...$subadmindata1);

return $subadmindata

参考链接https://wiki.php.net/rfc/spread_operator_for_array

© www.soinside.com 2019 - 2024. All rights reserved.