如何将 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
您不能将查找与获取一起使用(假设您需要一个结果而不是所有用户)。试试这个。但看起来你需要先正确地建立关系。无论如何,下面是快速回答。
$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)
我有 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
afterfind
it stop it's jobs so there is no need tofind
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
您不能将查找与获取一起使用(假设您需要一个结果而不是所有用户)。试试这个。但看起来你需要先正确地建立关系。无论如何,下面是快速回答。
$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)