所以我有一个表pages
,看起来像这样:
public function up()
{
Schema::create('pages', function (Blueprint $table) {
$table->increments('id');
$table->integer('user_id')->unsigned();
$table->string('name');
$table->integer('category')->unsigned();
] });
Schema::table('pages', function($table) {
$table->foreign('user_id')->references('id')->on('core_users')
->onUpdate('cascade')->onDelete('cascade');
$table->foreign('category')->references('id')->on('ecommerce_payment_pages_categories')
->onUpdate('cascade')->onDelete('set null');
});
}
public function down()
{
Schema::drop('pages');
}
表格categories
看起来像这样:
public function up()
{
Schema::create('ecommerce_payment_pages_categories', function (Blueprint $table) {
$table->increments('id');
$table->integer('user_id')->unsigned();
$table->foreign('user_id')->references('id')->on('core_users')
->onUpdate('cascade')->onDelete('cascade');
$table->string('name');
$table->timestamps();
});
}
public function down()
{
Schema::drop('categories');
}
pages model
看起来像这样:
class Pages extends Model
{
protected $table = 'pages';
public function user() {
return $this->belongsTo("\App\User");
}
protected $fillable = [
];
protected $casts = [
];
public function categories() {
return $this->belongsTo("\App\Models\Categories");
}
}
categories model
看起来像这样:
class PaymentPagesCategories extends Model
{
protected $table = 'categories';
public function user() {
return $this->belongsTo("\App\User");
}
protected $fillable = [
];
protected $casts = [
];
public function pages_categories() {
return $this->hasMany("\App\Models\\Pages");
}
}
因此,在我的页面表格中,我在column category
中保存用户从动态选择中选择的类别的ID,该动态选择将类别ID作为值和类别名称作为选项进行回显。但我无法将其保存为简单字符串,因为在另一个菜单中,用户可以选择删除类别,因此我希望在删除类别时从页表中的类别列中删除该类别。现在我显示数据库中的数据,如下所示:
public function getGet()
{
return response()->json(['success' => true, 'payment_pages' => \Auth::user()->payment_pages()->orderBy('id', 'ASC')->get()]);
}
因此,对于当前经过身份验证的用户,我会显示页面数据库表中的所有数据。 现在用户从我的选择中选择一个类别后,我在页面表格中的类别列中保存了该类别的ID。我需要进行查询才能在html中的不同视图中显示对应于我在页面表中保存的类别ID
答案 0 :(得分:0)
类别列未设置为允许空值。 要允许空值,可以将可空列修改器附加到类别列。 其余的代码似乎没问题。
public function up()
{
Schema::create('pages', function (Blueprint $table) {
$table->increments('id');
$table->integer('user_id')->unsigned();
$table->string('name');
$table->integer('category')->unsigned()->nullable(); // <= add this modifier
});
Schema::table('pages', function($table) {
$table->foreign('user_id')->references('id')->on('core_users')
->onUpdate('cascade')->onDelete('cascade');
$table->foreign('category')->references('id')->on('ecommerce_payment_pages_categories')
->onUpdate('cascade')->onDelete('set null');
});
}