php - 无法从数据库中回显用户数据 - 表示 "Property [id] does not exist"

标签 php laravel

近 2 天以来,我一直在努力克服这个错误。不用说,我对 Laravel 还是很陌生。我正在使用 Laravel 的注册表单(经过一些修改),并将该用户数据存储在我的数据库中名为“customusers”的表中。该数据包括他们的姓名/电子邮件/性别/描述等。我正在尝试使用资源 Controller 来基本上打印和编辑该数据。我面临的问题是,每当我尝试在我的主页上回显数据时,它都会给我错误“此集合实例上不存在属性 [id]”或电子邮件/名称。但是当我用 Auth::user()->id 回显数据时,它起作用了。没关系,如果我只想回显数据,这是可行的。但我也想编辑该数据,为此我将不得不使用我的模型。下面是我的代码:

显示.blade.php:

<div id="wrapper">

<div id="content">
  <div id="card">
    <div id="front">
      <div id="top-pic"></div>
    <div id="avatar"><span style="position: absolute;padding-top: 17px;margin-left: 34px;color:  #fff;font-size:  64px;" class="h5">
        {{ Auth::user()->name[0] }}
    </span></div>
      <div id="info-box">
        <div class="info">
          <h1>{{ Auth::user()->name }}</h1>
          <h2>{{ Auth::user()->message }}</h2>
        </div>
      </div>
      <div id="social-bar">
        <a href="{{ Auth::user()->facebook }}" target="_blank">
          <i class="fa fa-facebook"></i>
        </a>
        <a href="{{ Auth::user()->twitter }}" target="_blank">
        <i class="fa fa-twitter"></i>
        </a>
        {{ link_to_route('display.edit','',[$customusers->id],['class'=>'fa fa-edit']) }}

      </div>
    </div>

编辑.blade.php:

{!! Form::model($customusers,array('route'=>['display.store',$customusers->id],'method'=>'PUT')) !!}
            <div class="form-group">
                    {!! Form::text('name',null,['class'=>'form-control','placeholder'=>'Name']) !!}
             </div>
            <div class="form-group">
                    {!! Form::email('email',null,['class'=>'form-control','placeholder'=>'Email']) !!}
            </div>
                <div class="form-group form-row">
                        <div class="col-5">
                                {!! Form::select('gender', ['Male' => 'Male', 'Female' => 'Female'], null, ['class'=>'form-control','placeholder'=>'Choose Gender']); !!}
                        </div>
                        <div class="col">
                                {!! Form::text('facebook',null,['class'=>'form-control','placeholder'=>'Facebook ID']) !!}
                        </div>
                        <div class="col">
                                {!! Form::text('twitter',null,['class'=>'form-control','placeholder'=>'Twitter Handle']) !!}
                        </div>
                </div>
                <div class="form-group">
                        {!! Form::textarea('message',null,['class'=>'form-control','placeholder'=>'Talk about yourself']) !!}
                </div>
                <div class="form-group">
                        {!! Form::button('Create',['type'=>'submit','class'=>'btn btn-danger col-lg-12']) !!}
                </div>
                {!! Form::close() !!}

ProfileController.php:

<?php

namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\CustomUser;
use Illuminate\Support\Facades\DB;


class ProfileController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        $customusers = CustomUser::all();
        return view ('display',compact('customusers'));
}

/**
 * Show the form for creating a new resource.
 *
 * @return \Illuminate\Http\Response
 */
public function create()
{
   //
}

/**
 * Store a newly created resource in storage.
 *
 * @param  \Illuminate\Http\Request  $request
 * @return \Illuminate\Http\Response
 */
public function store(Request $request)
{
    //
}

/**
 * Display the specified resource.
 *
 * @param  int  $id
 * @return \Illuminate\Http\Response
 */
public function show($id)
{
    //
}

/**
 * Show the form for editing the specified resource.
 *
 * @param  int  $id
 * @return \Illuminate\Http\Response
 */
public function edit(CustomUser $customusers) 
{
    return view ('edit',compact('customusers'));
}

/**
 * Update the specified resource in storage.
 *
 * @param  \Illuminate\Http\Request  $request
 * @param  int  $id
 * @return \Illuminate\Http\Response
 */
public function update(Request $request, CustomUser $customusers)
{
    $customusers->update($request->all());
    return redirect()->route('display.index');
}


/**
 * Remove the specified resource from storage.
 *
 * @param  int  $id
 * @return \Illuminate\Http\Response
 */
public function destroy($id)
{
    //
}
}

CustomUser.php(模型):

   <?php

namespace App;

use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;

class CustomUser extends Authenticatable
{
    use Notifiable;

    protected $table = 'customusers';

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'name','username','email','gender','password','message','twitter','facebook',
    ];

    /**
     * The attributes that should be hidden for arrays.
     *
     * @var array
     */
    protected $hidden = [
        'password', 'remember_token',
    ];
}

Web.php(路由):

    Route::get('/', function () {
    return view('welcome');
});

Auth::routes();

Route::resource('/display','ProfileController');

如您所见,我在 index() 函数中使用 compact 将我数据库中的所有用户数据提供给它,当我 dd($customusers) 时,它确实向我显示了数组中的数据。但是当我使用 {{ $customusers->name }} - 它给我一个错误,说“属性 [name] 在这个集合实例上不存在”。因此,每当我尝试使用 link_to_route('display.edit','',[$customusers->id],'') 将用户重定向到编辑页面时,都会发生同样的情况。请帮我看看我在这里做错了什么。我之前制作了一个 CRUD 应用程序,我基本上做了同样的事情,而且一切都很完美。所以我不明白这里的问题是什么..

最佳答案

您需要循环客户数据:

@foreach($customusers as $customer)
 {{ link_to_route('display.edit','',[$customer->id],['class'=>'fa fa-edit']) }}
@endforeach

或者您可以编辑当前登录的数据。

{{ link_to_route('display.edit','',[Auth::user()->id],['class'=>'fa fa-edit']) }}

关于php - 无法从数据库中回显用户数据 - 表示 "Property [id] does not exist",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58762056/

相关文章:

php - undefined variable MySQL PHP

php - 如何将 PHP 变量中数字的百分比调用到 HTML/CSS?

php - 如何使用 extract 安全地创建 PHP 变量

laravel - 如何使用 sortBy() 对 Laravel 集合进行升序排序,并将 NULL 值放在最后而不是第一个

php - Laravel 获取用户今天和明天生日

jquery - 在 Laravel 中显示 JQuery 模态?

php - Codeigniter 如何避免重复显示一对多关系

php - 检测虚拟机 ovf 中所做的更改

laravel - ~ 在 Laravel 4.2 路由中

php - Laravel Eloquent Complex Join Statement - 提供了具体的例子