Laravel пытается добавить в базу данных - PullRequest
0 голосов
/ 05 июля 2018

Я новичок в фреймворке Laravel. Я пытаюсь сохранить из формы в базу данных.

Пример:

  • Ввод STEAM_ID:
  • Входной доступ:

Контроллер:

public function admins_add()
{
    $serveradmins = DB::table('server_admins')->first();
    $this->title('Add admins');
    $this->pageView('servers::admins_add', ['serveradmins' => $serveradmins]);
    DB::table('server_admins')->insert(
        array(
            $serveradmins->auth = Input::get('steam-id'),
            $serveradmins->access = Input::get('access'),
            $serveradmins->password = 'nopass',
            $serveradmins->flags = 'ce',
            $serveradmins->added_by = Input::get('added_by')
        )
    );
    $serveradmins->save();
    return Redirect::back();
}

Просмотров:

<div class="page page-servers page-servers-admin-form">
    <form method="POST" action="/admin/servers/admins/create" accept-charset="UTF-8" class="form-horizontal">
        <div class="form-group ">
            <label for="title" class="col-sm-3 control-label">STEAM ID</label>
            <div class="col-sm-9">
                <input name="steam-id" type="text" id="steam-id">
            </div>
        </div>

        <div class="form-group ">
            <label for="access" class="col-sm-3 control-label">Teisės</label>
            <div class="col-sm-9">
                <input name="access" type="hidden" value="" id="access">
                <select id="access" name="access"><option value="" selected="selected">-</option>
                    <option value="abcdefghijklmnopqrstuv">Owner</option>
                    <option value="bcdfijmnopqruv">Admin</option>
                    <option value="3" disabled>PREMIUM</option>
                </select>
            </div>
        </div>

        <div class="form-actions">
            <button type="submit" name="_form_submit" class="btn btn-default" value="1">
                <i class="fas fa-save "></i> 
                SAVE!
            </button>
            <button type="button" onclick="document.location.href='/admin/servers/admins'"  class="btn btn-default">
                <i class="fas fa-times "></i> Cancel
            </button>
        </div>
    </form>
</div>
</section>

И мои маршруты:

    ModuleRoute::get('admin/servers/admins/create', 'AdminServersController@admins_add');
    ModuleRoute::post('admin/servers/admins/create', 'AdminServersController@admins_add');

Не сердитесь на мой, если мой код ужасен, я новичок в Laravel и он мне действительно нравится! Спасибо, ребята, за помощь :)

Ответы [ 2 ]

0 голосов
/ 05 июля 2018

Первый: почему вы хотите выполнить admins_add() в вашем get маршруте? Создайте функцию с именем index() для облегчения понимания и скажите этой функции, чтобы она возвращала представление, подобное

public function index() {
$serveradmins = DB::table('server_admins')->first();
return view('viewname')->with('serveradmins', $serveradmins);
}

Тогда ваш admins_add() должен выглядеть так:

public function admins_add(Request $request)
{
       ServerAdmin::create([
        'auth' => $request->steam-id,
        'access' => $request->access,
        'password' => 'nopass',
        'flags' => 'ce',
        'added_by' => $request->added_by
        ]);     

    return Redirect::back();
}

И перед выполнением сгенерируйте модель ServerAdmin через CLI (php artisan make:model ServerAdmin), и внутри этой модели вы меняете заполнение на

protected $fillable = [
          'auth',
          'access',
          'password',
          'flags',
          'added_by'
          ];

и набор

protected $table = 'server_admins';

Редактировать: Как упомянул Н. Махурин в комментариях - примите это решение для практики с Laravel. Массовые задания имеют серьезную угрозу безопасности. Читайте здесь об этом: https://laravel.com/docs/5.6/eloquent#mass-assignment

0 голосов
/ 05 июля 2018

Ваша вставка выключена. Это должны быть пары ключ => значение (где ключ - это имя столбца в БД). Попробуйте

DB::table('server_admins')->insert([
    'auth' => Input::get('steam-id'),
    'access' => Input::get('access'),
    'password' => 'nopass',
    'flags' => 'ce',
    'added_by' => Input::get('added_by')
    ]);

См. https://laravel.com/docs/5.6/queries#inserts для получения дополнительной информации. Вы также можете пройти красноречивый маршрут и сделать:

$serverAdmin = new ServerAdmin();
$serverAdmin->auth = Input::get('steam-id'),
$serverAdmin->access = Input::get('access'),
$serverAdmin->password = 'nopass',
$serverAdmin->flags = 'ce',
$serverAdmin->added_by = Input::get('added_by')
$serverAdmin->save();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...