php - 字段 'user_id' 没有默认值

标签 php mysql laravel laravel-5

我正在使用 laravel 构建一个网络应用程序。

第一个问题:

用户仪表板上有一个简单的表格可供填写和保存。
这是模型:

class Salon extends Model
{
    protected $table = 'salons';
    protected $fillable = [
        'salonname', 'saloncity', 'salonaddress', 'salontel', 'salonmob', 'salonsite', 'saloncat', 'salonkhadamat', 'salonkhadamatprice', 'salondesc', 'saloninsta', 'salontelegram', 'salontags'
    ];
    public $timestamps = false;
}

这是 Controller :

public function store(Request $request)
{
    $user_id = Auth::user()->id;
    Salon::create([
        'user_id' => $user_id,
        'salonname' => $request['salonname'],
        'saloncity' => $request['saloncity'],
        'salonaddress' => $request['salonaddress'],
        'salontel' => $request['salontel'],
        'salonmob' => $request['salonmob'],
        'salonsite' => $request['salonsite'],
        'saloncat' => $request['saloncat'],
        'salonkhadamat' => $request['salonkhadamat'],
        'salonkhadamatprice' => $request['salonkhadamatprice'],
        'salondesc' => $request['salondesc'],
        'saloninsta' => $request['saloninsta'],
        'salontelegram' => $request['salontelegram'],
        'salontags' => $request['salontags']
    ]);

    return 'done!';
}

路线:

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

Auth::routes();

Route::get('/home', 'HomeController@index')->name('home');
Route::get('/salons/add', function () {
    return view('add_salon');
})->middleware('auth');
Route::post('salons', 'SalonsController@store');
Route::get('salons', function () {
    return 'Hi';
});

当我完成表单并点击发送按钮时,它返回此错误:

"SQLSTATE[HY000]: General error: 1364 Field 'user_id' doesn't have a default value (SQL: insert into salons (salonname,...

我哪里做错了?
我创建了一个表迁移:

public function up()
{
    Schema::create('Salons', function (Blueprint $table) {
        $table->increments('id');
        $table->integer('user_id')->unsigned();
        $table->foreign('user_id')->references('id')->on('users');
        $table->string('salonname');
        $table->string('saloncity');
        $table->string('salonaddress');
        $table->integer('salontel');
        $table->integer('salonmob');
        $table->string('salonsite');
        $table->string('saloncat');
        $table->string('salonkhadamat');
        $table->integer('salonkhadamatprice');
        $table->string('salondesc');
        $table->string('saloninsta');
        $table->string('salontelegram');
        $table->string('salontags');
        $table->timestamps();
    });
}

user_id 使用用户表中的外部引用。
让我解释一下这个过程,考虑我们有一些用户在我们的应用程序上注册,其中一些用户想要在我们的网站上添加他们的沙龙,所以我们想要使用沙龙表上用户表中的 user_id ,这样我们就可以使用以下命令返回沙龙我们主页上的用户数据(个人资料)。

第二个问题:

如果一个沙龙有两个独立的电话号码,我如何将它们分别存储在这张表中?
我的意思是,人们可以根据需要添加许多电话号码。或者在单独的字段中包含尽可能多的地址。

第三个问题:

为了为每个沙龙创建一个投资组合部分,我是否应该创建一个新表(例如附件)以包含图片地址和沙龙 ID,以便稍后将它们返回到各自的页面上?

最佳答案

user_id 添加到可填充数组中:

protected $fillable = ['user_id', 'salonname', 'saloncity', 'salonaddress', 'salontel', 'salonmob', 'salonsite', 'saloncat', 'salonkhadamat', 'salonkhadamatprice', 'salondesc', 'saloninsta', 'salontelegram', 'salontags'];

或者使用已定义的关系:

$salon = auth()->user()->salons()->create([....

如果没有定义:

public function salons()
{
    return $this->hasMany(Salon::class);
}

关于php - 字段 'user_id' 没有默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48606770/

相关文章:

header 重定向后 PHP $_SESSION 为空

php - 简单查询中的mysql数据插入问题

MySQL 使用 WHERE 子句选择具有最新可用日期的行

php - Laravel - 显示 2 个表中的信息

mysql - 在aws aurora mysql中获取连接查询的自动增量变量

laravel - 从 Laravel 的一行中选择单列?

php - Laravel 急切加载 phpunit 测试

javascript - WordPress 自定义帖子类型图像 uploader 问题

php - Laravel POST 调用返回 index() 函数而不是 store()

javascript - MVC Controller 和 ajax