Laravel 5.4如何修复'没有模型的查询结果'

时间:2017-08-28 15:19:14

标签: php laravel eloquent

每当我尝试通过另一个页面中的锚点访问/技巧/添加时,我都会收到此错误

enter image description here

重定向到此页面的锚点(使用GET方法)是:

<a class="btn icon-btn btn-success" href="/skills/add">
        <span class="glyphicon btn-glyphicon glyphicon-plus img-circle text-success"></span>
            Add
    </a>

尝试使用dd("test")对其进行测试但是甚至无法工作。

这是我的技能路线/添加:

Route::put('/skills/add', 'SkillsController@add');

Route::get('/skills/add', 'SkillsController@addIndex');

以下是我在SkillsController中的功能

public function addIndex() {
    if (Auth::check()) {
        return view('skills.add');
    } else {
        return redirect('/home');
    }
}

public function add(Request $request) {
    /*Sets validation rules for Skill object*/
    $skillRules = [
        'name' => 'required|max:25|regex:/[1-9a-zA-Z ]\w*/',
    ];
    if (Skills::where('name', '=', $request->name)->count() > 0) {
        return redirect('/skills')->with('message', "EXISTS");
    }

    $validator = Validator::validate($request->all(), $skillRules);
    if ($validator == null) {
        $newSkill = new Skills;
        $newSkill->name = strtolower($request->name);
        $newSkill->save();
        return redirect('/skills')->with('message', "CREATED");
    }
}

技巧.add视图就是这个

@extends('layouts.app')

@section('content')

<div class="container">
    <h1>Edit Skill</h1>
    <form method="POST" action="/skills/add">
        {{method_field('PUT')}}
    {{csrf_field()}}
    <div class="row">
        <div class="col-lg-5">
            <div class="form-group">
                 Name:
                <input name="name" class="form-control">
            </div>
        </div>
    </div>
    <div class="row">
        <div class="col-lg-2">
            <div class="form-group">
            <button type="submit" class="btn btn-primary">Add Skill</button>
            <a href="/skills"><button type="button" class="btn btn-danger">Cancel</button></a>
            </div>
        </div>
    </div>
</form>
</div>
@endsection

3 个答案:

答案 0 :(得分:0)

不确定发生了什么,如果将来有人遇到同样的问题,我真的只是删除并手动制作控制器,模型和刀片,它开始工作。不是很多科学或解释,抱歉。

答案 1 :(得分:-1)

将您的route更改为已命名的

Route::GET('/skills/add', 'SkillsController@addIndex')->name('addSkills');
Route::POST('/skills/add', 'SkillsController@add')->name('saveSkills');

和你的刀片

@extends('layouts.app')
@section('content')

<div class="container">
    <h1>Edit Skill</h1>
    <form method="POST" action="{{route('saveSkills')"> //** Change this
        {{csrf_field()}}
        <div class="row">
            <div class="col-lg-5">
                <div class="form-group">
                     Name:
                    <input type="text" name="name" class="form-control">    //** Change this
                </div>
            </div>

            //Remaining form groups

        </div>
        <div class="row">
            <div class="col-lg-2">
                <div class="form-group">
                <button type="submit" class="btn btn-primary">Add Skill</button>
                <a href="/skills"><button type="button" class="btn btn-danger">Cancel</button></a>
                </div>
            </div>
        </div>
</form>
</div>
@endsection

将锚标记的href值更改为命名路线,如

<a class="btn icon-btn btn-success" href="{{route('addSkills')}}">
    <span class="glyphicon btn-glyphicon glyphicon-plus img-circle text-success"></span>
    Add
</a>

和您的控制器

// SHOW ADD NEW SKILL FORM
public function addIndex() {
    if (Auth::check()) {
        return view('skills.add');  //view path is skills->add.blade.php
    } else {
        return redirect('/home');
    }
}

//SAVE ADD NEW SKILL FORM DATA
public function add(Request $request) {

    dd($request->name); //Check if value is getting

    /*Sets validation rules for Skill object*/
    $skillRules = [
        'name' => 'required|max:25|regex:/[1-9a-zA-Z ]\w*/',
    ];
    $validator = Validator::validate($request->all(), $skillRules);

    if (Skills::where('name', '=', $request->name)->count() > 0) {
        return redirect('/skills')->with('message', "EXISTS");
    }

    if ($validator == null) {
        $newSkill = new Skills;
        $newSkill->name = strtolower($request->name);
        $newSkill->save();
        return redirect('/skills')->with('message', "CREATED");
    }
}

还在控制器

上添加use App\RampUp\Skills;

答案 2 :(得分:-2)

抱歉,但没有POST - <form method="POST" action="/skills/add">的路线 也许POST仍在执行。

另一方面,大多数Route错误可以通过清除缓存(如果存在),重新排列路由或在其间放置一个组来解决,如

 Route::group(['prefix' => 'skills'], function() {
   Route::put('/add', 'SkillsController@add');

   Route::get('/add', 'SkillsController@addIndex');
  }