Laravel更新了hasMany关系

时间:2015-09-26 07:59:30

标签: php laravel laravel-5

在我的系统users中可以有多个timesheets,时间表可以有很多数据。

我正在尝试更新data_timesheet表中的数据行。我用这个:

$data = ['column_1' => 'value'];

$this->findTimesheetById($id)->data()->saveMany($data);

但是,它给了我以下错误:

Argument 1 passed to Illuminate\Database\Eloquent\Relations\HasOneOrMany::save() must be an instance of Illuminate\Database\Eloquent\Model, array given

我知道它为什么会给我错误,因为我需要发送一个模型而不是数组。 当传递的值来自用户表单时,如何发送模型?

修改

我可以这样做,但必须有更好的方法吗?

$data = $this->findTimesheetById($id)->data();
$data->delete();
$data->insert($data);

1 个答案:

答案 0 :(得分:-1)

这样做的方法是:

1)创建文件模型并将其放在Models文件夹中。这个模型甚至可以几乎是空的,就像这样:

<?php namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Session;
use DB;
class Booking extends Model{

2)然后在Controller中创建该模型的实例,如此

$theinstance = new Booking;

3)然后使用该对象获得给定的值,如下所示:

$theinstance->name = $name;
$theinstance->telephone = $telephone;
$theinstance->save();

这将是保存数据的方法。

现在,关于更新,在控制器上你可以有这样的东西:

$photosslide = Property::returnPhotosSlide($id);  
      $propertydetails = Property::returnPropertyDetails($id);
      $alsointown = Property::returnAlsoInTown($id);
      return view('detailsproperty', compact('photosslide','propertydetails','alsointown'));  

这会将Form中的值发送到Model

一旦进入模型,只需执行更新查询。