如何在laravel中使用来自同一控制器的INSERT或UPDATE命令

时间:2014-04-24 14:01:21

标签: php sql laravel-4

我有一个表格,其中有一个textarea字段,在页面加载时,它将从表中获取细节,(第一次它将在第一次显示空白时表中没有记录),有一个更新按钮,用于在数据库中插入该字段的值,在该页面将重新加载后,我将从数据库中获取该字段中的值,当我再次更改该字段的值时,单击更新按钮,它应该更新数据库中该字段的值,并从数据库中获取该详细信息,

那么如何在该更新按钮上使用相同的控制器首先在数据库中插入值然后更新数据库中的值?

2 个答案:

答案 0 :(得分:0)

您可以使用firstOrNew(array $condition)获取首次点击结果或新模型实例。

之后,将提交的数据设置为实例,并通过save()方法保存实例。

public class SomeController {

   public function createOrUpdateData() {
      $data = Model::firstOrNew(['someColumn' => $condition]);

      // Set the model attribute from submitted data

      $data->save();

      return Redirect::back();
   }

}

答案 1 :(得分:0)

在重定向到get route之前的POST函数中,检索新创建的记录的id并将其传递给视图。如果数据为空,则传递一个空值,该值可以在文本输入中访问,然后可以从下一个POST函数中检索。像这样:

// Controller
public function getIndex()
{
$data = Model::first();
if ($data)
{
$value = $data->column_that_you_need;
}
else
{
$value = "";
}

return View::make('your.view', compact('value'));
}

public function postIndex()
{
// validate
$post = new Model;
$post->column = Input::get('your_input');
$post->save;
return Redirect::to('/your_route_for_index');
}

// your view
<input type="text" value="{{{$value}}}"/>