【发布时间】:2017-05-20 21:00:30
【问题描述】:
我想在将数据存储到数据库之前验证输入字段,所以我浏览了 laravel 文档并遵循了这些
php artisan make:request StoreLessons-
在
StoreLessonspublic function rules() { return [ 'title' => 'required|unique:lesson', 'body' => 'required', ]; } 在我的控制器中
namespace App\Http\Controllers;
use Response;
use App\lesson;
use Illuminate\Http\Request;
use App\Acme\Transformers\LessonTransformer;
use Illuminate\Support\Facades\Input;
use App\Http\Requests\StoreLessons;
class LessonsController extends ApiController
{
protected $lessonTransformer;
function __construct(LessonTransformer $lessonTransformer)
{
$this->lessonTransformer = $lessonTransformer;
}
//fetch all and pass a metadata 'data'
public function index()
{
$lessons = Lesson::all();
return $this->respond([
'data' => $this->lessonTransformer->transformCollection($lessons->all())
]);
}
//add a new lesson to lessons table
public function store(StoreLessons $request)
{
Lesson::create($request->all());
//Lesson::create(input::all());
return $this->respondCreated('Lesson created successfully');
}
}
现在我遇到了这个错误
QueryException in Connection.php line 770:
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'laravel_api.lesson' doesn't exist (SQL: select count(*) as aggregate from `lesson` where `title` = the)
我不知道它为什么要查找 lesson 表我有一个 lessons 表
但store() 函数使用默认验证
//this works fine but i wan to do the validation
public function store()
{
if (! input::get('title') or ! input::get('body')) {
return $this->respondBadRequest();
}
Lesson::create(input::all());
return $this->respondCreated('Lesson created successfully');
}
谢谢
【问题讨论】:
-
与您的问题无关,但是,根据 laravel 命名约定,您的模型名称应为
Lesson而不是lesson。所以这个模型会自动在你的数据库中找到表lessons。 -
嘿,感谢您抽出宝贵时间,将
unique:lesson更改为lessons时出错 -
我的意思不是在您的验证规则中,而是在模型的名称中。
use App\lesson应该是use App\Lesson
标签: php laravel api validation laravel-5.3