访问集合时如何动态设置父级table?
How to dynamically set a parent table when accessing a collection?
我正在尝试从动态不同的 table 获取数据,具体取决于登录的用户以及是否允许他编辑 table,我认为可行的是这个:
$colaboradores = Colaboradore::where('email', '=', Auth::user()->email)->first();
$tables = DB::connection('mysql2')->select("SHOW TABLES LIKE 'intervencoes\_%'");
foreach ($tables as $object) {
$arrays[] = (array)$object;
}
foreach ($arrays as $array) {
$string = implode('', $array);
$test = $colaboradores->Niveis->$string->id;
}
它在代码的最后一位输出错误说
"Trying to get property 'id' of non-object"
我一直在四处寻找几个小时,但找不到任何相关的东西。
顺便说一句,这都在 livewire 组件中。
提前致谢。
编辑:
dd($colaboradores->Niveis)
dd($colaboradores->Niveis->$string)
由于 $colaboradores->Niveis->$string
returns 一个集合,您需要对其进行迭代以获得结果。
$test = [];
foreach ($colaboradores->Niveis->$string as $obj) {
$test[] = $obj->id;
}
然后你可以检查$test
中的ID,例如dd($test);
。
如果 $obj
不是真实对象,这可能会导致问题,因此您可以使用以下方法检查它:
if (!is_object($obj)) {
//Do something - Not an object!
}
我正在尝试从动态不同的 table 获取数据,具体取决于登录的用户以及是否允许他编辑 table,我认为可行的是这个:
$colaboradores = Colaboradore::where('email', '=', Auth::user()->email)->first();
$tables = DB::connection('mysql2')->select("SHOW TABLES LIKE 'intervencoes\_%'");
foreach ($tables as $object) {
$arrays[] = (array)$object;
}
foreach ($arrays as $array) {
$string = implode('', $array);
$test = $colaboradores->Niveis->$string->id;
}
它在代码的最后一位输出错误说
"Trying to get property 'id' of non-object"
我一直在四处寻找几个小时,但找不到任何相关的东西。
顺便说一句,这都在 livewire 组件中。
提前致谢。
编辑:
dd($colaboradores->Niveis)
dd($colaboradores->Niveis->$string)
由于 $colaboradores->Niveis->$string
returns 一个集合,您需要对其进行迭代以获得结果。
$test = [];
foreach ($colaboradores->Niveis->$string as $obj) {
$test[] = $obj->id;
}
然后你可以检查$test
中的ID,例如dd($test);
。
如果 $obj
不是真实对象,这可能会导致问题,因此您可以使用以下方法检查它:
if (!is_object($obj)) {
//Do something - Not an object!
}