如何将 2 table 数据放入 laravel 中的单变量数组?

how to get 2 table data into single variable array in laravel?

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

我想使用的技术是,在用户 table 中,我的 ID 在子管理员 table 中与 sub_admin_id(列)相同,我如何使用 eloquent 模型到第一个 link 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 ]

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

你可以像这样使用concat

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

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

Notice when you use get after find it stop it's jobs so there is no need to find here

get() 方法会给你一个集合而不是数组,所以你可以按如下方式合并两个集合。

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

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

您可以使用 php ... 运算符来推送数据

像这样的例子

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

return $subadmindata

ref link https://wiki.php.net/rfc/spread_operator_for_array

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

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

试试这个 在用户模型中

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

在控制器中

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