라라벨에서 view에서 데이터 가져오지 못하는 원인?
본문
라라벨을 공부하고 있습니다.
제가 설정한 web.php 내용입니다.
Route::get('/admin/member','App\Http\Controllers\admin\MemberController@index')->name('admin.member-list');
controller에는
namespace App\Http\Controllers\admin;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\DB;
use App\Models\admin\Member;
class MemberController extends Controller
{
//처음 파일 실행
public function index(Request $req) {
$this->page = 1;
$this->pageView = 10;
$member = Member::GetMemberList($this->page, $this->pageView, $req->input('keyfield'), $req->input('keyword'));
return view('admin.member-list', ['member'=>$member, 'member_cnt'=>$member['cnt']]);
}
}
그리고 model에는
//회원리스트 가져오기
public static function GetMemberList($page, $pageView, $keyfield="", $keyword="") {
$page = 1;
$pageView = 10;
$startIndex = ($page - 1) * $pageView;
if(!$keyfield && !$keyword) {
$all_member = Member::select('idx','user_id', 'user_name', 'email', 'mobile', 'user_status', 'login_time', 'regdate')->get();
//$all_member = DB::table('lms_member')->get();
$all_member['cnt'] = Member::select('idx','user_id', 'user_name', 'email', 'mobile', 'user_status', 'login_time', 'regdate')->get()->count();
}
else {
$all_member = Member::select('idx','user_id', 'user_name', 'email', 'mobile', 'user_status', 'login_time', 'regdate')->where($keyfield,'like', '%'.$keyword.'%')->take($startIndex)->get();
$all_member['cnt'] = Member::select('idx','user_id', 'user_name', 'email', 'mobile', 'user_status', 'login_time', 'regdate')->where($keyfield,'like', '%'.$keyword.'%')->count();
}
//echo "37 app/Models/admin/Member.php all_member[cnt]=<pre>"; print_r($all_member[cnt]); echo "</pre>";
return $all_member;
}
view에는
<table>
<tr>
<td>idx</td>
<td>아이디</td>
<td>성명</td>
<td>이메일</td>
<td>핸드폰 번호</td>
<td>주소</td>
</tr>
@foreach ($member as $mb)
{{ $mb }}
{{-- <tr>
<td>{{ $mb->idx }}</td>
<td>{{ $mb->user_id }}</td>
<td>{{ $mb->user_name }}</td>
<td>{{ $mb->email }}</td>
<td>{{ $mb->mobile }}</td>
<td>{{ $mb->addr }} {{ $mb->addr2 }}</td>
</tr> --}}
@endforeach
</table>
이렇게 작성하고
$mb를 출력하면
{"idx":770,"user_id":"test5","user_name":"\uc774\uc0c1\ucca0","email":"*** 개인정보보호를 위한 이메일주소 노출방지 ***","mobile":"*** 개인정보보호를 위한 휴대폰번호 노출방지 ***","user_status":"1","login_time":"0000-00-00 00:00:00","regdate":"2022-07-10 17:37:03"} 5
이렇게 db의 데이터를 가져오는데
{{ $mb->idx }}
이렇게 하면 Attempt to read property "idx" on int 라는 오류메시지가 나옵니다.
어디를 수정해야 할까요?
답변 3
<td>{{ $mb->idx }}</td> <== 이 줄을 삭제하면 어떤 에러가 나오나 한번 해 보세요.
<td>{{ $mb->user_id }}</td>
형변환 문제인것 같은데
한번 idx를 string으로 변환해보셔요
형변환 문제가 아닌 것 같습니다.