Laravel:属性[名称]在此集合实例上不存在

时间:2019-06-29 06:38:13

标签: php html laravel laravel-5 error-handling

我正在尝试从我的个人资料页面的用户表中获取一些数据。但是,当我单击个人资料页面时,它给了我一些错误:

  

此集合实例上不存在属性[name]。

问题出在哪里?我做错了还是缺少一些代码?

用户模型

fetching

控制器

var teamname = "";
// onclick of 'a' event
$(document).on('click', 'a', function() {
    //getting id value i.e: your teamname
    var teamname = $(this).attr('id');

    //getting fmonth value on change event    
    $('#Fmonth').change(function() {
        var Fmonth = $('#Fmonth').val();
        alert(Fmonth);
        alert(teamname);
        if (teamname != '') {
            $.ajax({
                type: 'post',
                url: 'read_gable.php',
                data: {
                    'month': Fmonth,
                    'team': teamname //<-passing team value
                },

                success: function(data) {
                    $("#containerDiv").html(data)
                    $("#containerDiv").hide().fadeIn(500)
                    //alert(Fmonth);
                },
                error: function(data) {
                    alert('Failed');
                }
            });
        }
    });

});

查看

protected $fillable = [
    'name', 'email', 'password', 'nim', 'phone_number', 'department'
];

protected $hidden = [
    'password', 'remember_token',
];

public function dropcv(){
    return $this->hasMany('App\Dropcv');
}

public function registration(){
    return $this->hasMany('App\Registration');
}

在视图部分中,我只是做一些测试以从users表中获取简单数据。

我很沮丧地为我的问题找到解决方案。我已经在网络上搜索并尝试了很多解决方案,但是没有任何效果。我对laravel还是很陌生,非常感谢您的帮助。

4 个答案:

答案 0 :(得分:3)

用于控制

public function show($id){
$users = User::find($id);
return view('users.profile',compact('users'));
}

用于查看页面

<h3>$users->name</h3>

用于控制

public function index(){
$users = User::all();
return view('users.profile',compact('users'));
}

您正在尝试访问不正确的数组上的属性 您应该先foreach然后访问您的媒体资源

@foreach($users as $user)
<h3>{{ $user->name }}</h3>
@endforeach

答案 1 :(得分:0)

您正在尝试访问不正确的数组上的属性
您应该先foreach然后访问您的媒体资源

@foreach($users as $user)
    <h3>{{ $user->name }}</h3>
@endforeach

修改
当您使用user::alluser::get()时,它等效于select * from users的SQL语法,而laravel将为您提供collection的实例而不是数组,因此当您调用user::all()时您会得到一个集合实例,其中包含user个实例数组,这是该实例的

Collection {#332 ▼
  #items: array:3 [▼
    0 => User {#333 ▶}
    1 => User {#334 ▶}
    2 => User {#335 ▶}
  ]
}

有关更多信息,请阅读Laravel Collection

答案 2 :(得分:0)

使用此:

public function index()
{
    $users = User::get();
    return view('users.profile')->with('users',$users);
}

并且对于此控制器,您必须在刀片中使用@foreach来显示用户列表,如下所示:

@foreach($users as $user)
    <h3>{{$user->name}}</h3>
@endforeach

以及以下功能:

public function show($id)
{
    $user = User::where('id', $id)->first();
    return view('users.profile')->with('user',$user);
}

对于此视图:

<h3>{{$user->name}}</h3>

答案 3 :(得分:0)

实际上我想问另一个问题,当我使用foreach时,它将在我的用户表中显示所有数据。是否只能获取一个特定数据?我的意思是我只想获取一个人的数据,而不是全部数据。