Laravel 5.3数据库更新按钮单击

时间:2017-07-15 08:08:17

标签: php laravel eloquent

所以我正在构建一个应用程序来监控任务/工作。每个作业都有一个状态,默认值为“1”。如果已完成,用户将单击一个按钮,将状态更改为“2”,表示已完成。但是,到目前为止我还没有成功,我需要你的帮助。

到目前为止,这就是我所做的

按钮链接:

<p>
{{ link_to('job/detail/' . $job->id, 'Finish Task', ['class' => 'btn btn-primary btn-lg']) }}
</p>

控制器:

public function finish($id)
{
   $job = Job::findOrFail($id);
   $job->update(['status' => '2']);
}

最后,我的路线,我最大的疑问。因为我可能有两条相互冲突的路线

Route::get('job/detail/{job}', 'JobController@show');
Route::put('job/detail/{job}', 'JobController@finish');

我没有使用任何表单,我想直接点击按钮进行更新。这可能吗?

感谢您的回答

2 个答案:

答案 0 :(得分:0)

试试这个,尝试更改网址,这样可行。试着告诉

#include<stdio.h>
#include<conio.h>

void swap(int* a, int* b)
{
    int t = *a;
    *a = *b;
    *b = t;
}

int partition (int arr[], int low, int high)
{
    int pivot = arr[high];
    int i = (low - 1); 

    for (int j = low; j <= high- 1; j++)
    {
        if (arr[j] <= pivot)
        {
            i++; // increment index of smaller element
            swap(&arr[i], &arr[j]);
        }
    }
    swap(&arr[i + 1], &arr[high]);
    return (i + 1);
}
/*
arr[] --> Array to be sorted,
low --> Starting index,
high --> Ending index */
void quickSort(int arr[], int low, int high)
{
    if (low < high)
    {
        int pi = partition(arr, low, high);

        quickSort(arr, low, pi - 1);
        quickSort(arr, pi + 1, high);
    }
}

void printArray(int arr[], int size)
{
    int i;
    for (i=0; i < size; i++)
        printf("%d ", arr[i]);

}

void main()
{
    clrscr();
    int arr[100], n,i;
    printf("Enter the size of array:\n");
    scanf("%d",&n);

    printf("Enter your Array List:\n");
    for (i=0;i<n;i++)
    scanf("%d",&arr[i]);

    quickSort(arr, 0, n-1);
    printf("Sorted array: ");
    printArray(arr, n);
    getch();
}

答案 1 :(得分:0)

如果你想让它更安全,你应该像你一样使用PUT方法:

Route::put('job/detail/{job}/finished', 'JobController@finish');

/*********/

public function finish(Request $request,Job $job){
  $this->validate($request,[
   'status'=>'required|in:2'
  ]);

  $job->update(['status'=>$request->only('status')]);
}

/*********/

<form action="/job/detail/{{$job->id}}/finished" method="POST">
   {{csrf_field()}}
   <input type="hidden" name="_method" value="PUT"></input>  
   <input type="hidden" name="status" value="2"></input>
   <button type="submit" class="btn btn-primary">Change Staus</button>
</form>

不使用表格:

Route::get('job/detail/{job}/finished', 'JobController@finish');

/*********/

public function finish(Job $job){

  $job->update(['status'=>2);

}

/*********/
<a href="/job/detail/{{$job->id}}/finished" class="btn btn-primary">Change Status</a>

正如您所见,我已在链接末尾添加完成,因为它可能与您的其他获取路径冲突。