SQLSTATE [23000]: Нарушение ограничения целостности: 1048 Le champ 'url' ne peut être vide (null) - PullRequest
0 голосов
/ 09 января 2020

Я изучаю Laravel и PHP и получаю эту ошибку , когда отправляю пустое поле:

SQLSTATE [23000]: нарушение ограничения целостности: 1048 Le champ 'url' ne peut être vide (null) (SQL: вставить в urls (url, shortned) значения (?, 6kuHSS))

Я потерян Я не понимаю, какой код делает эту ошибку ...

Вот мой код:

Route::post('/', function(){
    function make_shortned(){
        $shortned = Str::random(6);
        if(App\Url::whereShortned($shortned)->first())
        {
            return make_shortned();
        }
        else
        {
            return $shortned;
        }
    }

    $data = ['url' => request('url')];
    $validation = Validator::make($data, ['url' => 'required|url']);


    $url = App\Url::where('url', request('url'))->first();

    if($url) // le short existe déjà en bdd
    {
        return view('result')->withShortned($url->shortned);
    }
    else
    {
        $row = App\Url::create([
            'url' => request('url'),
            'shortned' => make_shortned()
        ]);

        if($row) // L'entrée a bien été créée 
        {
            return view('result')->withShortned($row->shortned);
        }
        else
        {
            echo 'test';
        }

    }
});

1 Ответ

0 голосов
/ 09 января 2020

Если ваше поле url не может быть пустым, вам необходимо проверить это в своей проверке. В настоящее время вы создаете экземпляр валидатора, но на самом деле не валидируете:

Route::post('/', function(Request $request){
    function make_shortned() {
        $shortned = Str::random(6);
        if(App\Url::whereShortned($shortned)->first())
        {
            return make_shortned();
        }
        else
        {
            return $shortned;
        }
    }

    $data = $request->validate([
        'url' => 'required|url',
    ]);


    $url = App\Url::where('url', $request->input('url'))->first();

    if($url) 
    {
        return view('result')->withShortned($url->shortned);
    }
    else
    {
        $row = App\Url::create([
            'url' => $request->input('url'),
            'shortned' => make_shortned()
        ]);

        if($row) // L'entrée a bien été créée 
        {
            return view('result')->withShortned($row->shortned);
        }
        else
        {
            echo 'test';
        }

    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...