【问题标题】:Laravel when db insert getting too few arguments error当 db insert 获得太少的参数错误时,Laravel
【发布时间】:2021-02-07 08:50:43
【问题描述】:

当尝试将用户插入数据库时​​,我得到了

ArgumentCountError 函数参数太少 Illuminate\Database\Eloquent\Model::setAttribute(), 1 传入 C:\Repos\Laravel\voleran\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Concerns\HasAttributes.php 在第 713 行,预计正好 2 行

我该怎么办?

<?php

namespace App\Models;

use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;

class User extends Model
{
use HasFactory, Notifiable;

/**
 * The attributes that are mass assignable.
 *
 * @var array
 */
protected $table = "users";
protected $guarded = [];
const UPDATED_AT = '';
const DELETED_AT = '';
/**
 * The attributes that should be hidden for arrays.
 *
 * @var array
 */
 }


public function registerUser() {
    $user = User::create([
        'username' => request('register_username'),
        'email' => request('register_email'),
        'password' => Hash::make(request('register_password')),
        'token' => Str::random(60),
        'user_code' => Str::random(10),
        'user_news' => request('register_newsletter')
    ]);

    Auth::login($user);

    return redirect()->route('anasayfa');
}

    <form class="form" action="uyelik/kayit" method="POST">
                @csrf
                <!-- FORM ROW -->
                <div class="form-row">
                    <!-- FORM ITEM -->
                    <div class="form-item">
                    <!-- FORM INPUT -->
                    <div class="form-input">
                        <label for="register-email">E-Posta</label>
                        <input type="text" id="register-email" name="register_email">
                    </div>
                    <!-- /FORM INPUT -->
                    </div>
                    <!-- /FORM ITEM -->
                </div>
                <!-- /FORM ROW -->

                <!-- FORM ROW -->
                <div class="form-row">
                    <!-- FORM ITEM -->
                    <div class="form-item">
                    <!-- FORM INPUT -->
                    <div class="form-input">
                        <label for="register-username">Kullanıcı Adı</label>
                        <input type="text" id="register-username" name="register_username" autocomplete="off">
                        <input type="hidden" class="register_username_check" name="register_username_check" value="0">
                    </div>
                    <!-- /FORM INPUT -->
                    </div>
                    <!-- /FORM ITEM -->
                </div>
                <!-- /FORM ROW -->

                <!-- FORM ROW -->
                <div class="form-row">
                    <!-- FORM ITEM -->
                    <div class="form-item">
                    <!-- FORM INPUT -->
                    <div class="form-input">
                        <label for="register-password">Şifre</label>
                        <input type="password" id="register-password" name="register_password">
                    </div>
                    <!-- /FORM INPUT -->
                    </div>
                    <!-- /FORM ITEM -->
                </div>
                <!-- /FORM ROW -->

                <!-- FORM ROW -->
                <div class="form-row">
                    <!-- FORM ITEM -->
                    <div class="form-item">
                    <!-- FORM INPUT -->
                    <div class="form-input">
                        <label for="register-password-repeat">Şifre Tekrar</label>
                        <input type="password" id="register-password-repeat" name="register_password_repeat">
                    </div>
                    <!-- /FORM INPUT -->
                    </div>
                    <!-- /FORM ITEM -->
                </div>
                <!-- /FORM ROW -->

                <!-- FORM ROW -->
                <div class="form-row">
                    <!-- FORM ITEM -->
                    <div class="form-item">
                    <!-- CHECKBOX WRAP -->
                    <div class="checkbox-wrap">
                        <input type="checkbox" id="register-newsletter" name="register_newsletter" checked>
                        <!-- CHECKBOX BOX -->
                        <div class="checkbox-box">
                        <!-- ICON CROSS -->
                        <svg class="icon-cross">
                            <use xlink:href="#svg-cross"></use>
                        </svg>
                        <!-- /ICON CROSS -->
                        </div>
                        <!-- /CHECKBOX BOX -->
                        <label for="register-newsletter">Haberleri ve güncelleştirmeleri e-posta olarak gönder.</label>
                    </div>
                    <!-- /CHECKBOX WRAP -->
                    </div>
                    <!-- /FORM ITEM -->
                </div>
                <!-- /FORM ROW -->

                <!-- FORM ROW -->
                <div class="form-row">
                    <!-- FORM ITEM -->
                    <div class="form-item">
                    <!-- BUTTON -->
                    <button type="submit" name="btnKayitOl" class="button medium primary btnRegister" disabled>Kayıt Ol!</button>
                    <!-- /BUTTON -->
                    </div>
                    <!-- /FORM ITEM -->
                </div>
                <!-- /FORM ROW -->
                </form>

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    你不应该使用

    const UPDATED_AT = '';
    const DELETED_AT = '';
    

    如果您不希望 Eloquent 自动管理这些列,请将模型上的 $timestamps 属性设置为 false。在您的用户模型中添加以下代码

    public $timestamps = false;
    

    【讨论】:

    • 感谢您的评论,不要忘记编辑类型“composer dump-autoload”到终端。
    猜你喜欢
    • 1970-01-01
    • 2020-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-14
    相关资源
    最近更新 更多