调用未定义的方法 Illuminate\Database\Eloquent\Relations\BelongsTo::save()

Call to undefined method Illuminate\Database\Eloquent\Relations\BelongsTo::save()

我想将数据插入多个 table(一对一),但出现错误,在我的数据库中,列“metode_id”为空。我希望“metode_id”不为空

这是class“特拉斯克西”:

class Transaksi extends Model
{
    protected $table = "transaksi";
    protected $primarykey = "id";
    protected $fillable = ['stok_kedelai', 'stok_ragi', 'harga_kedelai', 'harga_ragi'];

    public function metode()
    {
        return $this->belongsTo('App\Metode');
    }
public function pengguna()
    {
        return $this->belongsTo('App\Pengguna');
    }
}

这是class“方法”:

class Metode extends Model
{
    protected $table = "metode";
    protected $primarykey = "id";
    protected $fillable = ['bni', 'bri', 'mandiri', 'bca', 'btpn', 'ovo', 'gopay', 'dana'];

    public function transaksi()
    {
        return $this->hasOne('App\Transaksi', 'metode_id');
    }
}

这是“Transaksi”的数据库:

public function up()
{
    Schema::create('transaksi', function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->bigInteger('pengguna_id')->unsigned();
        $table->integer('stok_kedelai');
        $table->integer('stok_ragi');
        $table->integer('harga_kedelai');
        $table->integer('harga_ragi');
        $table->bigInteger('metode_id')->unsigned();
        $table->timestamps();
    });

    Schema::table('transaksi', function (Blueprint $table) {
      $table->foreign('pengguna_id')->references('id')->on('pengguna')->onDelete('cascade')->onUpdate('cascade');
    });

    Schema::table('transaksi', function (Blueprint $table) {
      $table->foreign('metode_id')->references('id')->on('metode')->onDelete('cascade')->onUpdate('cascade');
    });
}

这是“Metode”的数据库:

public function up()
{
    Schema::create('metode', function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->integer('bni')->nullable();
        $table->integer('bri')->nullable();
        $table->integer('mandiri')->nullable();
        $table->integer('bca')->nullable();
        $table->integer('btpn')->nullable();
        $table->integer('ovo')->nullable();
        $table->integer('gopay')->nullable();
        $table->integer('dana')->nullable();
        $table->timestamps();
    });
}

我想将数据插入到多个 table 中,这取决于 pengguna table 的“id”,但我收到错误 Call to undefined method Illuminate\Database\Eloquent\Relations\BelongsTo::save()

public function data_penjualan(Request $request)
{
    $pengguna = Pengguna::where('id', Auth::user()->id)->first();

    $transaksi = new Transaksi();
    $transaksi->stok_kedelai    = $request->stok_kedelai;
    $transaksi->stok_ragi       = $request->stok_ragi;
    $transaksi->harga_kedelai   = $request->harga_kedelai;
    $transaksi->harga_ragi      = $request->harga_ragi;
    $pengguna->transaksi()->save($transaksi);

    $metode = new Metode();
    $metode->bni = $request->bni;

    $transaksi->metode()->save($metode);

    return view('transaksi.supplier', compact('transaksi'));
}

这是我的数据库,“metode_id”为空,我希望“metode_id”不为空: enter image description here

如果您尝试更新 belongsTo 关系,则必须使用 associate 方法而不是 save 方法。

...
    $metode = new Metode();
    $metode->bni = $request->bni;
    $metode->save();

    $transaksi->metode()->associate($metode);
    $transaksi->save();
...

如果您尝试在 belongsTo 关系中使用 SaveMethod。

Add Comment(controller file)

public function addComment($id)
{   
    $comment = new Comment(['comment' =>'Comment 1']);
    $user = User::find(1);
    $user->comment()->save($comment);
    return "Comment Submitted";
}

Comment.php (Model File)

class Comment extends Model
{
  use HasFactory;
  protected $table ="comments";
  protected $fillable = ['comment'];

  public function User()
 {
    return $this->belongsTo(User::class);
 } 
}

web.php (Route File)

Route::get('comment/{id}',[UserController::class,'addComment']);