【发布时间】:2021-06-13 02:57:41
【问题描述】:
我正在尝试根据登录的用户动态从不同的表中获取数据,如果允许他编辑所述表,我认为可行的是:
$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 组件中。
提前致谢。
编辑:
【问题讨论】:
-
这个错误表明这个
$colaboradores->Niveis->$string不是一个对象,所以它可能是一个数组/集合甚至是空的。你能dd($colaboradores->Niveis);和dd($colaboradores->Niveis->$string);用结果更新问题吗? -
查看
dd($colaboradores->Niveis->$string),您可以检查它是否为空。因此,如果您尝试获取$colaboradores->Niveis->$string->id,则与您尝试从空变量获取属性相同。尝试打印dd($string)并检查它是否是 Niveis 的属性或是否触发了关系。可能没有,也许这就是问题所在。 -
@Laerte 你是对的,我得到的字符串是输入错误的,当我输入
dd($colaboradores->Niveis->$string)时,它现在带有一个集合。但是现在每当我真正尝试获取一个 id 时,dd($colaboradores->Niveis->$string->id)它就会说Property [id] does not exist on this collection instance.
标签: php laravel laravel-livewire