我正在运行最新版本的 Laravel。 我正在尝试建立与表的关系,但似乎总是遇到某种错误。我想要显示的数据已显示,但在所有内容下都有一个大错误:
routes.php 第 26 行出现错误异常: 尝试获取非对象的属性
在我的routes.php 文件中,这是代码:
Route::get('select', function() {
$users = App\UserInfo::all();
foreach ($users as $u) {
echo $u->userID.' USERNAME: '.$u->userData->username.'<br/>';
echo $u->userOption->dis_joindate.'<br/>'; // Line 26
}
});
第 25 行似乎可以正常打印,没有错误,但下一行给出了对象错误。
这是我的 UserInfo 模型 php 文件:
这是我的选项模型 php 文件:
我的数据库提供的所有内容(在 useroptions 表中)是 id、userID、dis_joindate、dis_location、dis_posts 和 dis_likes。最后 4 列仅给出文本。
这是运行所有这些时页面上输出的图像:
最佳答案
这里的问题(假设关系定义良好)可能是数据。您可能没有每个对象的相关数据。
所以代替:
foreach ($users as $u) {
echo $u->userID.' USERNAME: '.$u->userData->username.'<br/>';
echo $u->userOption->dis_joindate.'<br/>'; // Line 26
}
你应该使用:
foreach ($users as $u) {
echo $u->userID.' USERNAME: '.(($u->userData) ? $u->userData->username : '-').'<br/>';
echo (($u->userOption) ? $u->userOption->dis_joindate : '-').'<br/>'; // Line 26
}
除了减少查询数量之外:
$users = App\UserInfo::all();
你应该像这样使用预加载:
$users = App\UserInfo::with('userData', 'userOption')->get();
关于php - 拉拉维尔 5 : Trying to get property of non-object error with relationships,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35617647/