我有一个问题,当表中没有数据时,customer_id将为null。我知道有一个函数IFNULL,通过它我可以将customer_id null更改为0。所以这是我的查询不起作用。他检查了stackover流中解决的许多相关问题,但如果有人可以帮助我,我将找不到自己的解决方案。
它告诉我这个错误


  “ message”:“试图获取非对象的属性”,


customerController代码是

public function store(Request $request)
    {
        //
         try  {


                   $this->validate($request,[

            'name'=>'required',
            'contact'=>'required|unique:Customers',
            // 'contact'=>'required',
            'address'=>'required',
            'email'=>'required|string|email|max:191|unique:Customers',


        ]);

         $getId = DB::table('Customers')->select('*', DB::raw('ifnull(id,0)'))->first();

     $getfirst = $getId->id;

        if($getfirst == 0)
        {
            $getfirst = 1;
             $incId = $getfirst;
        }
        else{
            $incId = $getfirst+1;
        }
        // $lastInsertedId= $Customer->id;

        $Customer= Customer::create([

        'name'=>$request['name']."-". $incId ,
          'contact'=>$request['contact'],
            'address'=>$request['address'],
              'email'=>$request['email']



       ]);
       return response()->json($Customer);
               }

          catch (Exception $e) {
                        return response()->json($e->getMessage(), 500);
                    }


    }


客户表是

 public function up()
    {
        Schema::create('customers', function (Blueprint $table) {
            $table->bigIncrements('id');
             $table->string('name')->default("مشتری");
              $table->integer('contact')->unique();
              $table->string('address');
              $table->string('email')->unique();
               $table->softDeletes();

            $table->timestamps();
        });
    }

最佳答案

IFNULL用于检查该字段是否可为空。

因此,它不用于检查记录是否存在。

您可以使用empty()检查对象是否存在

$getId = DB::table('Customers')->first();

$getfirst = empty($getId)? 0 : $getId->id;

关于mysql - 如何在laravel中使用IFNull,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59968603/

10-13 08:53