繁体   English   中英

没有有关模型[用户]的查询结果| laravel

[英]No query results for model [User] | laravel

我是Laravel的新手,所以我还不熟悉它返回的错误,希望有人可以帮助我。

所以我用注册表格和登录表格创建了一个简单的应用程序,注册用户可以发布他/她想要的任何内容,但是我遇到了这个错误

用户可以在以下表单中发布:

@section('content')

    <section class="header">
        <ul>
            <li></li>
            <li><a href="{{ URL::route('profile')}}" class="new">Back to Profile</a></li>
        </ul>

    </section>
    <div class="newpost">
        <h3>What new today?</h3><br>
        <form action="{{URL::route('createPost')}}" method="post" autocomplete="off">

        <div class="form-group">
            <label for="title">Title</label>
            <input type="text" class="form-control" id="title" name="title" placeholder="Title..." required>
        </div>

        <div class="form-group">
            <label for="content">Write Report</label>
            <textarea class="form-control" name="content" id="content" placeholder="Write Here..." rows="10"></textarea>
        </div>

            <button type="submit" class="btn2">Publish</button>

    </form>
    </div>
@stop

这是路线:

Route::get('/Newpost', array(
    'uses' => 'LoginUsersController@newPost',
    'as' => 'newPost'
    ));

Route::post('/CreatePost/{id}', array(
    'uses' => 'LoginUsersController@createPost',
    'as' => 'createPost'
    ));

and the controller

public function createPost($id)
    {
        $users = User::findOrFail($id);

        $post = array(
            'title' => Input::get('title'),
            'content' => Input::get('content')
            );
        $posts = new Post($post);
        $user->post()->save($post);

        dd($post);
    }

以及我猜测的用户模型导致了错误。

<?php

use Illuminate\Auth\UserTrait;
use Illuminate\Auth\UserInterface;
use Illuminate\Auth\Reminders\RemindableTrait;
use Illuminate\Auth\Reminders\RemindableInterface;

class User extends Eloquent implements UserInterface, RemindableInterface {

    use UserTrait, RemindableTrait;


    /**
     * The database table used by the model.
     *
     * @var string
     */
    protected $table = 'users';


    protected $fillable = array('email', 'password');

    /**
     * The attributes excluded from the model's JSON form.
     *
     * @var array
     */
    protected $hidden = array('password', 'remember_token');


    public function getRememberToken() 
    {
        return $this->remember_token;
    }


    public function setRememberToken($value) 
    {
        $this->remember_token = $value;
    }


    public function getRememberTokenName() 
    {
        return 'remember_token';
    }

    public function Post()
    {
        return $this->hasMany('Post', 'user_id');
    }

}

有人可以向我解释为什么我会收到此错误吗? 谢谢

导致此错误的原因是findOrFail无法找到任何东西。 因此它失败了 如果您的路线取决于用户ID。 实际上,在创建表单时您必须将其传递:

<form action="{{URL::route('createPost', Auth::id())}}" method="post" autocomplete="off">

Auth::id()检索当前登录用户的ID)

但是,相反,我建议您从createPost路由中删除用户ID,并直接在控制器中使用当前登录的用户:

Route::post('/CreatePost', array(
    'uses' => 'LoginUsersController@createPost',
    'as' => 'createPost'
));

接着:

public function createPost()
{
    $user = Auth::user();

    $post = array(
        'title' => Input::get('title'),
        'content' => Input::get('content')
        );
    $posts = new Post($post);
    $user->post()->save($post);

    dd($post);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM