Вставка данных в базу данных laravel - PullRequest
0 голосов
/ 13 января 2020

В данный момент я работаю с Laravel. Я пытаюсь вставить данные в базу данных. Это не пользовательские данные, а данные о продукте. Заказчики должны иметь возможность вставить название, описание и цену продукта в базу данных.

Я просмотрел сайт laravel, однако мне не удалось ничего найти. Есть некоторые люди с таким же вопросом, как у меня, на StackOverflow. Однако ответы, которые им были даны, не работают для меня.

Мой контроллер:


namespace App\Http\Controllers;

use Illuminate\Http\Request;

class ProductsController extends Controller
{
    public function insertform(){
        return view('home');
        } 
        public function insert(Request $request){
            $productname = $request->input('title');
            $description = $request->input('description');
            $price = $request->input('price');
            $data=array('title'=>$productname,"description"=>$description,"price"=>$price);
            DB::table('products')->insert($data);
            echo "Record inserted successfully.<br/>";
            echo '<a href = "/insert">Click Here</a> to go back.';
}
}

Мой взгляд:


@section('content')
<h1>Add your new items here:</h1>

<form method="get">
<div class="title">
  <div class="title">
    <span class="input-group-text" id="title">Title</span>
  </div>
  <input type="text" name="title" class="form-control" aria-label="title" aria-describedby="inputGroup-sizing-default">
</div>
<br>
<br>
<div class="description">
  <div class="description">
    <span class="input-group-text" id="description">Description</span>
  </div>
  <input type="text" name="description" class="form-control" aria-label="description" aria-describedby="inputGroup-sizing-default">
</div>
<br>
<br>
<div class="price">
  <div class="price">
    <span class="input-group-text" id="price">Price</span>
  </div>
  <input type="text" name="price" class="form-control" aria-label="price" aria-describedby="inputGroup-sizing-default">
</div>
<br>
<br>
  <div class="form-group">
    <label for="exampleFormControlFile1">Insert Image</label>
    <input type="file" class="form-control-file" id="exampleFormControlFile1">
  </div>
  <button type="submit" class="btn btn-primary">Submit</button>
  </form>
@endsection

Моя сеть. php:

<?php

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

Route::get('insert','ProductsController@insertform');
Route::post('create','ProductsController@insert'); 

Auth::routes();

Route::get('/home', 'HomeController@index')->name('home');

Структура моей базы данных:

enter image description here

Дом и прием, а также некоторый код в Интернете. php, сделано аутентификацией.

Надеюсь, вы, ребята, сможете мне помочь. Я хочу убедиться, что данные о товаре вставлены в базу данных.

Ответы [ 3 ]

2 голосов
/ 13 января 2020

Не используйте класс БД. Вместо этого создайте модель с именем Product и используйте функцию модели для создания или обновления данных в таблицу.

php artisan make: модель Product

$product= Product::create([
    'name' =>  $request->name, # declared as fillable on Product model
    'description' => $request->description,
    ...
]);

Преобразование маршрута of / insert в POST и добавьте поле csrf в вашей форме

@csrf

ИЛИ

<input type="hidden" name="_token" value="{{csrf_token()}}">

На вашем контроллере проверка ввода в функции вставки.

Также возьмите посмотрите на них -

  1. https://laravel.com/docs/5.8/eloquent#defining -модели
  2. Laravel Правила проверки или https://laravel.com/docs/5.8/validation#quick -описание логика проверки c
1 голос
/ 13 января 2020

В вашей сети. php, Добавьте имена маршрутов

Route::get('insert','ProductsController@insertform')->name('product.create');
Route::post('create','ProductsController@insert')->name('product.store');

По вашему мнению, измените метод для публикации и добавьте атрибут действия и поле csrf.

<form  action="{{ route('product.store') }}" method="post">
@csrf

В контроллере

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use DB;

class ProductsController extends Controller
{
    public function insertform(){
        return view('home');
    } 

    public function insert(Request $request){
        $productname = $request->input('title');
        $description = $request->input('description');
        $price = $request->input('price');
        $data = array(
            "title" => $productname,
            "description" => $description,
            "price" => $price
        );

        DB::table('products')->insert($data);

        echo "Record inserted successfully.<br/>";
        echo '<a href = "/insert">Click Here</a> to go back.';
    }
}

Альтернативно вы можете напрямую добавить действие без имени маршрута

<form  action="/create" method="post">
@csrf
0 голосов
/ 13 января 2020

В laravel 5.6 я могу показать вам, как вставить данные и отобразить данные на индексной странице

, поэтому прежде всего я могу написать свой маршрут, здесь мы можем использовать 2 маршрутов

первый - страница страницы индекса; второй - хранилище; в контроллере магазина вы можете отобразить сохраненные данные.

Route::get('/FAQ_page', 'SettingController@FAQ_page')->name('FAQ_page');
Route::get('/FAQ_page/create', 'SettingController@FAQ_page_create')->name('FAQ_page.create');
Route::post('/FAQ_page/store', 'SettingController@FAQ_pagestore');

теперь создайте базу данных и подключитесь к вашему модулю. Это ваш модуль.

namespace App;

use Illuminate\Database\Eloquent\Model;

class FAQpage extends Model
{
    protected $table = 'p66_FAQ_page';
     public $timestamps = false;

      protected $primaryKey = 'fid';
}

теперь сделайте ваш контроллер таким, как этот

public function FAQ_page()
    {   
        $data = FAQpage::get();
        return view('SuperAdmin.settings.FAQ_page', compact('data'));
    }

     public function FAQ_page_create()
    {

        return view('SuperAdmin.settings.FAQ_page_create');
    }

    public function FAQ_pagestore(Request $request)
    {
        request()->validate([
            'FAQ_question'=> 'required',
            'FAQ_answer'=> 'required',
            'Sort_order'=> 'required|max:4',
            'FAQ_departments'=> 'required',
        ]);

        $data = new FAQpage();
        $data->FAQ_question = $request->get('FAQ_question');
        $data->FAQ_answer = $request->get('FAQ_answer');
        $data->Sort_order = $request->get('Sort_order');
        $data->FAQ_departments = $request->get('FAQ_departments');
        $data->Created_date = Carbon::now();
        $data->save();


        return redirect('/SuperAdmin/FAQ_page');
    }

спасибо

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