Как добавить данные в базу данных в Laravels

#php #laravel

Вопрос:

Я буду добавлять данные в базу данных, но у меня есть ошибка, когда я пишу код для добавления данных в массив, и ошибка, подобная этой,

синтаксическая ошибка, неожиданное «=», ожидание «]»

Я использую следующий код:

Контроллер

 <?php
namespace AppHttpControllers;

use DateTime;
use IlluminateHttpRequest;
use IlluminateSupportFacadesDB;

class BooksController extends Controller
{
    public function addBooks(Request $request)
    {
        $data = array([
            'name' = $request->input('bookName');
        'year' = $request->input('tahunT');
        'author' = $request->input('author');
        'summary' = $request->input('Summary');
        'publisher' = $request->input('publishers');
        'pageCount' = $request->input('pageCount');
        'readPage' = $request->input('ReadPage');
        'finished' = $pageCount == $readPage ? true : false;
        'reading' = $readPage > 0 ? true : false;
        'insertedAt' = new DateTime();
        'updatedAt' = $insertedAt;]);

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

Вот такой вид

 <form class="row g-3" action="{{ route('addbook') }}" method="post">
    <input type = "hidden" name = "_token" value = "<?php echo csrf_token(); ?>">
    <div class="col-md-6">
        <label for="bookName" class="form-label">Nama Buku:</label>
        <input type="text" class="form-control" name="bookName" id="bookName">
    </div>
    <div class="col-md-3">
        <label for="tahunT" class="form-label">Tahun Terbit : </label>
        <input type="number" class="form-control" name="tahunT"  id="tahunT">
    </div>
    <div class="col-md-3">
        <label for="author" class="form-label">Author : </label>
        <input type="text" class="form-control" name="author" id="author">
    </div>
    <div class="col-md-6">
        <label for="publishers" class="form-label">Publisher : </label>
        <input type="text" class="form-control" name="publishers" id="publishers" >
    </div>
    <div class="col-md-3">
        <label for="pageCount" class="form-label">Page Count :</label>
        <input type="number" class="form-control" name= "pageCount" id="pageCount">
    </div>
    <div class="col-md-3">
        <label for="ReadPage" class="form-label">Read Page :</label>
        <input type="number" class="form-control" name="ReadPage" id="ReadPage">
    </div>
    <div class="col-12">
        <label for="Summary" class="form-label">Summary :</label>
        <textarea class="form-control" name= "Summary" id="Summary"></textarea>
        <br><br>
    </div>
    <div class="col-12">
        <button type="submit" class="btn btn-primary">Add Book</button>
    </div>
</form>
 

Вот маршрут

 Route::post('/addbook', 'BooksController@addBooks')->name('addbook');
 

У вас есть какое-нибудь решение этой проблемы? Я также пытался:

 'name' => $request->bookName
 

но это также приводит к ошибке.

Ответ №1:

Похоже, вы смешали старый синтаксис массива array() и новый синтаксис [] . Имейте в виду, что каждая запись массива должна заканчиваться на , » а «вместо ; » а».

Вы могли бы использовать следующее:

 $data = [
    'name'=> $request->input('bookName'),
    'year'=> $request->input('tahunT'),
    'author'=> $request->input('author'),
    'summary'=> $request->input('Summary'),
    'publisher'=> $request->input('publishers'),
    'pageCount' => $request->input('pageCount'),
    'readPage'=> $request->input('ReadPage'),
    'finished' => $pageCount == $readPage ? true : false,
    'reading' => $readPage > 0 ? true : false,
    'insertedAt'=> new DateTime(),
    'updatedAt'=> $insertedAt
];

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