Laravel:未定义的属性:Illuminate \ Support \ Collection :: $ id

时间:2017-01-15 12:19:05

标签: php laravel

亲爱的程序员,

我的项目遇到了问题,问题是我无法从MYSQL数据库中检索数据。

我一步一步地按照教程,确保我的代码是正确的。

继承我的web.php

Route::get('viewprofile','pagecontroller@view');
Route::get('/viewprofile','Controller@getProfile');

继承我的控制器getProfile功能 function getProfile()

  {
        $users['users'] = DB::table('users')->get();

        if(count($users) > 0)
        {
            return view('viewprofile',$users);
        }
        else
        {
                return view('viewprofile');
        }
    } 

继承我的viewprofile.blade.php

<table>
        <tr>
            <td>ID : </td>
            <td>Username : </td>
            <td>Email : </td>
        </tr>
         @foreach($users as $value)
         <tr>
            <td>{{  $users->id }}</td>
            <td>{{  $users->name }}</td>
            <td>{{  $users->email }}</td>
        </tr>
            @endforeach
    </table>

我的数据库名为finalprojectSL,我的表名为users,其属性为:

id
name
email
password
retypepassword

任何帮助将不胜感激。

谢谢你, 最诚挚的问候

4 个答案:

答案 0 :(得分:0)

尝试用此替换它:

$value->id
$value->name
$value->email

答案 1 :(得分:0)

在这里

if(count($users) > 0)
{
    return view('viewprofile',$users);
}

取而代之的是

if (count($users) > 0) 
{
    return view('viewprofile', compact('users'));
}

将刀片更改为

@foreach($users['users'] as $value)
    <tr>
        <td>{{  $value->id }}</td>
        <td>{{  $value->name }}</td>
        <td>{{  $value->email }}</td>
    </tr>
@endforeach

以前您尝试$users->id$userscollection,而且ID不包含id,因此Undefined property: Illuminate\Support\Collection::$id

答案 2 :(得分:0)

'模型'用户需要在$fillable变量上显示ID;

在您的用户模型中:

protected $fillable = [
    'id',
    ... others fields
]; 

答案 3 :(得分:0)

我认为您的代码需要更新如下:

function getProfile()

public function getProfile()
{
$users = DB::table('users')->get();


 if(count($users) > 0)
 {

     return view('viewprofile',compact('users'));
 }
 else
 {
         return view('viewprofile');
 }

}

viewprofile.blade.php

<table>
 <tr>
   <td>ID : </td>
   <td>Username : </td>
   <td>Email : </td>
 </tr>
 @if(isset($users))
   @foreach($users as $value)
     <tr>
       <td>{{  $value->id }}</td>
       <td>{{  $value->name }}</td>
       <td>{{  $value->email }}</td>
     </tr>
   @endforeach
 @endif
</table>

希望这对你有用!