Php 如何在访问集合时动态设置父表?
我正在尝试从不同的表中动态获取数据,这取决于哪个用户登录,如果允许他编辑所述表,我认为应该这样做:Php 如何在访问集合时动态设置父表?,php,laravel,laravel-livewire,Php,Laravel,Laravel Livewire,我正在尝试从不同的表中动态获取数据,这取决于哪个用户登录,如果允许他编辑所述表,我认为应该这样做: $colaboradores=Colaboradore::where('email','=',Auth::user()->email)->first(); $tables=DB::connection('mysql2')->select(“显示像'intervecoes\\\\\\%'这样的表”); foreach($tables作为$object){ $arrays[]=(数组)$object;
$colaboradores=Colaboradore::where('email','=',Auth::user()->email)->first();
$tables=DB::connection('mysql2')->select(“显示像'intervecoes\\\\\\%'这样的表”);
foreach($tables作为$object){
$arrays[]=(数组)$object;
}
foreach($array作为$array){
$string=内爆(“”,$array);
$test=$colaboradores->Niveis->$string->id;
}
它在代码的最后一位输出一个错误
“试图获取非对象的属性“id”
我已经找了几个小时了,但找不到任何相关的东西。
顺便说一下,这些都在livewire组件中
提前谢谢
编辑:
由于
$colaboradores->Niveis->$string
返回一个集合,因此需要对其进行迭代以获得结果
$test = [];
foreach ($colaboradores->Niveis->$string as $obj) {
$test[] = $obj->id;
}
然后您可以使用dd($test)检查$test
中的ID代码>例如
如果$obj
不是真实对象,这可能会导致问题,因此您可以使用以下工具进行检查:
if (!is_object($obj)) {
//Do something - Not an object!
}
此错误表示此$colaboradores->Niveis->$string
不是对象,因此它可能是数组/集合,甚至可能为空。你能dd($colaboradores->Niveis)代码>和dd($colaboradores->Niveis->$string)
并用结果更新问题?查看dd($colaboradores->Niveis->$string)
可以检查它是否为空。因此,如果您尝试获取$colaboradores->Niveis->$string->id
,则与尝试从空变量获取属性相同。尝试打印dd($string)
并检查它是否是Niveis的属性,或者它是否触发了Niveis上的关系。可能没有,也许这就是问题所在。@Laerte你是对的,我收到的字符串有一个输入错误,当我做dd($colaboradores->Niveis->$string)时,
现在它附带了一个集合。但是现在每当我真正尝试获取一个id时,dd($colaboradores->Niveis->$string->id)
就会说Property[id]在这个集合实例上不存在。