Laravel:列'category_slug'不能为空

lokaqttq  于 2022-12-24  发布在  Go
关注(0)|答案(3)|浏览(150)

数据库状态[23000]:完整性约束冲突:1048列'category_slug'不能为空(SQL:更新products设置category_slug =?,productsupdated_at = 2022年12月23日12:06:26,其中id = 1)
如何从类别slug表中获取产品类别_slug列。
类别表:
|身份证|姓名|蛞蝓||四个|四类|第四类||五个|五类|五类||六个|六类|六类|
产品表
|身份证|姓名|类别标识|类别_块||1个|美国电信|四个|第四类||第二章|BTCH信道|五个|五类||三个|欧元|六个|六类|

    • 产品控制器**(更新方法)
public function update(Request $request)
    {
        $validator = Validator::make($request->all(), [
            'name' => 'required|string|max:190',
            'price' => 'required',
            'category_id' => 'required',
        ])->validate();

        $code=Product::find($request->id);
        $code->name=$request->name;
        $code->category_id=$request->category_id;
        $code->category_slug=$request->category_slug;
    $code->update();

        return redirect()->back()->with('success',__('Product has been updated'));
    }

'

    • 产品型号**

'

class Product extends Model
{
    use HasFactory;

    public function category()
    {
        return $this->hasOne(Category::class,'id','category_id');
    }

'
我得到这个错误
数据库状态[23000]:完整性约束冲突:1048列'category_slug'不能为空(SQL:更新products设置category_slug =?,products. updated_at = 2022年12月23日12:06:26,其中id = 1)

xam8gpfp

xam8gpfp1#

我认为您不应该将category_slug添加到产品表中
category_id添加到products表时,您已经拥有了有关产品类别的所有信息
从产品中获取category_slug
你可以做这样的事情

Product::with('category')->find(1)->category->slug
vhmi4jdf

vhmi4jdf2#

问题就出在这里:

$code->category_slug=$request->category_slug;

看起来$request-〉category_slug为空/未定义。如果您确定通过输入从前端发送它,请确保它具有正确的名称属性name=“category_slug”
但是,如果您不从前端发送它,您应该使用slug helper从您选择的字符串生成它,例如:

$code->category_slug= \Str::slug($request->name . '-' .$request->category_id);

这将从名称和ID组合生成一个slug。

EDIT:如果您想获得当前产品类别slug,您可以按如下方式使用它:

$code->category_slug=$code->category->category_slug;

您可能需要使用$code-〉保存()而不是update()

e1xvtsh3

e1xvtsh33#

更改迁移。

public function up()
{
    Schema::table('products', function (Blueprint $table) {
        $table->string('category_slug')->nullable()->change();
    });
}

更新记录时似乎没有向category_slug列发送任何值。该列必须具有nullable约束。

相关问题