Вставка данных в базу данных laravel

Вставка данных в базу данных laravel

13.01.2020 04:47:26 Просмотров 53 Источник

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

Я посмотрел на сайте 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

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, был сделан путем аутентификации.

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

У вопроса есть решение - Посмотреть?

https://stackoverflow.com/questions/59717912/inserting-data-to-database-laravel#comment105586512_59717912
Пожалуйста, добавьте структуру базы данных в свой вопрос.
https://stackoverflow.com/questions/59717912/inserting-data-to-database-laravel#comment105586559_59717912
@N'Bayramberdiyev я изменил его на post, он выдает следующую ошибку: метод POST не поддерживается для этого маршрута. Поддерживаемые методы: GET, HEAD.
https://stackoverflow.com/questions/59717912/inserting-data-to-database-laravel#comment105586641_59717912
@leonardeveloper я добавил его.
https://stackoverflow.com/questions/59717912/inserting-data-to-database-laravel#comment105586676_59717912
Я изменил свое действие на / create. А что еще? Это дает страницу с истекшим сроком действия.

Ответы - Вставка данных в базу данных laravel / Inserting data to database laravel

Является ответом!
Masood Khan

13.01.2020 05:00:05

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

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

На ваш взгляд, способ изменить пост и добавить атрибут Action и 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
https://stackoverflow.com/questions/59717912/inserting-data-to-database-laravel/59718123#comment105586844_59718123
он выдает следующую ошибку: класс 'App\Http\Controllers\DB' не найден
https://stackoverflow.com/questions/59717912/inserting-data-to-database-laravel/59718123#comment105586882_59718123
добавить использовать БД перед объявлением класса
https://stackoverflow.com/questions/59717912/inserting-data-to-database-laravel/59718123#comment105587109_59718123
спасибо тебе большое, дружище, почти готово. Я считаю, что это последняя ошибка; ошибка sqlstate[42S22]: столбец не найден: 1054 неизвестный столбец 'заголовок' в 'список полей' (среда SQL: вставка на products (title, description, price) значения (rsgjdyj, yrjdj, ryjjry))
https://stackoverflow.com/questions/59717912/inserting-data-to-database-laravel/59718123#comment105587172_59718123
Доля столбцов таблицы продуктов.
https://stackoverflow.com/questions/59717912/inserting-data-to-database-laravel/59718123#comment105587193_59718123
какую колонку я должен добавить?
Hášíl Páůďýál

13.01.2020 05:02:55

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

php artisan make: модель продукта

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

Преобразования маршрут /вставить в пост и добавить CSRF в поле в вашей форме

@csrf

ОПЕРАЦИОННАЯ

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

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

Также взгляните на них -

  1. https://laravel.com/docs/5.8/eloquent#defining-models
  2. Правила Проверки Laravel или https://laravel.com/docs/5.8/validation#quick-writing-the-validation-logic
Siraj Ahmed

13.01.2020 05:38:38

В 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');
    }

спасибо

Закрыть X