Php SQLSTATE[HY000]:常规错误:1364字段“uID”没有默认值
刚从拉威尔开始。我已经附加了我的用户和配置文件模型以及配置文件控制器。我的目标是在配置文件表中自动分配外键uID。任何帮助都将不胜感激 用户模型文件 配置文件模型文件 配置文件迁移文件 配置文件控制器文件Php SQLSTATE[HY000]:常规错误:1364字段“uID”没有默认值,php,mysql,database,laravel,xampp,Php,Mysql,Database,Laravel,Xampp,刚从拉威尔开始。我已经附加了我的用户和配置文件模型以及配置文件控制器。我的目标是在配置文件表中自动分配外键uID。任何帮助都将不胜感激 用户模型文件 配置文件模型文件 配置文件迁移文件 配置文件控制器文件 如果在程序中不提供值,则需要在表定义级别提供默认值 根据您的描述,在创建用户记录后,似乎缺少创建配置文件的功能。更改迁移文件, 因为您希望稍后定义关系,所以您的外部id字段应该可以为空 use Illuminate\Support\Facades\Schema; use Illuminate\
如果在程序中不提供值,则需要在表定义级别提供默认值
根据您的描述,在创建用户记录后,似乎缺少创建配置文件的功能。更改迁移文件, 因为您希望稍后定义关系,所以您的外部id字段应该可以为空
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateProfilesTable extends Migration
{
public function up()
{
// create profile table
Schema::create('profiles', function (Blueprint $table) {
$table->increments('pID');
$table->timestamp('created_at')->useCurrent();
$table->string('summary')->default('');
$table->integer('uID')->nullable()->unsigned();
$table->foreign('uID')
->references('uID')
->on('users')
->onDelete('cascade');
});
}
}
如果您想在创建配置文件后分配登录用户
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\profile;
class ProfileController extends Controller
{
public function store(Request $request)
{
// used to store user profile after validation
$this->validate($request,[
'summary' => 'required'
]);
$profile = new profile([
'summary' => $request->get('summary'),
'uID' => auth()->user()->id,
]);
$profile->save();
return redirect()->route('profile.create')->with('success','Profile created');
}
}
你试过给uID一个默认值吗?我使用了nullable作为默认值,这个问题消失了,但是它使uID为null。我希望在不断添加用户和相关配置文件时将uID设置为用户'uID'。我使用了nullable作为默认值,问题消失了,但如何将uID设置为用户'uID'。uID是引用用户“uID”的外键。我希望继续添加新用户及其关联的配置文件,而无需在配置文件表中手动设置uID外键。因此,您将添加ID为autoincrement的用户,并且在需要创建新配置文件时,您没有该用户的最后一个autoincrement序列值。我说得对吗?尝试提供selecting user object back以获取自动增量值。是。我如何落实你的建议?我是否在$profile->user->uID之前添加$profile['uID']=$profile->user->uIDsave@AmartyaBarua:那不对。在$profile->user中,此时可能会出现空值。在最坏的情况下,您需要从firstname='…'和lastname='…'以及email='…'的用户处调用数据库中的SELECT*之类的函数,以便将自动增量返回到程序中。我不知道拉威尔的工作原理。许多框架也会在实体发送到数据库后自动更新其数据库数据。
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateProfilesTable extends Migration
{
public function up()
{
// create profile table
Schema::create('profiles', function (Blueprint $table) {
$table->increments('pID');
$table->timestamp('created_at')->useCurrent();
$table->string('summary')->default('');
$table->integer('uID')->unsigned();
$table->foreign('uID')->references('uID')->on('users')->onDelete('cascade');
});
}
}
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\profile;
class ProfileController extends Controller
{
public function store(Request $request)
{
// used to store user profile after validation
$this->validate($request,[
'summary' => 'required'
]);
$profile = new profile([
'summary' => $request->get('summary'),
]);
$profile->save();
return redirect()->route('profile.create')->with('success','Profile created');
}
}
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateProfilesTable extends Migration
{
public function up()
{
// create profile table
Schema::create('profiles', function (Blueprint $table) {
$table->increments('pID');
$table->timestamp('created_at')->useCurrent();
$table->string('summary')->default('');
$table->integer('uID')->nullable()->unsigned();
$table->foreign('uID')
->references('uID')
->on('users')
->onDelete('cascade');
});
}
}
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\profile;
class ProfileController extends Controller
{
public function store(Request $request)
{
// used to store user profile after validation
$this->validate($request,[
'summary' => 'required'
]);
$profile = new profile([
'summary' => $request->get('summary'),
'uID' => auth()->user()->id,
]);
$profile->save();
return redirect()->route('profile.create')->with('success','Profile created');
}
}