최신 버전의 Laravel을 실행 중입니다. 테이블과의 관계를 설정하려고하지만 항상 일종의 오류가 발생하는 것 같습니다. 표시하려는 데이터가 표시되지만 모든 항목 아래에 다음과 같은 큰 오류가 있습니다.
route.php 라인 26의 ErrorException : 객체가 아닌 속성을 가져 오려고합니다.
내 route.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();
다음과 같이 eager loading을 사용해야합니다.
$users = App\UserInfo::with('userData', 'userOption')->get();
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다