无法更新mysql数据库的特定列

时间:2015-05-27 11:10:18

标签: php mysql laravel

我无法更新数据库的特定列。在我的数据库中有一个"条件"列的默认值为" pending"。我想用值"接受"来更新此列,但我无法这样做。

我的routes.php

Route::get('accept/{id}',array(
    'as'=>'accept-product',
    'uses'=>'GoodsController@updateProduct
));

我的控制器:

public function updateProduct($id) 
{
    $product = Products::findOrFail($id);
    $product->conditions = 'accept';
    $product->save();
}

我的观点:

@foreach($product as $productAccept)
    <a href="{{URL::route('accept-product')}}/{!! $productAccept->id !!}   ">Accept</a>
@endforeach

当我点击“接受”按钮时,网址就像这样

http://localhost/project/public/accept/{id}

我想这样:

http://localhost/project/public/accept/7

我的意思是我无法将{id}替换为78等整数。

我的routes

出了什么问题

5 个答案:

答案 0 :(得分:5)

您定义的路线需要一个额外参数 - id。您需要将路由功能中的产品ID作为额外参数传递,如下所示:

 <a href="{{URL::route('accept-product', ['id' => $productAccept->id])}}">Accept</a>

答案 1 :(得分:2)

试试这个,

<a href="{{ route('accept-product', $productAccept->id)}}">Accept</a>

答案 2 :(得分:2)

使用网址

<a href="{!! URL::to('accept/$productAccept->id') !!}">Accept</a>

答案 3 :(得分:2)

t

您的问题来自:t

答案 4 :(得分:0)

我看到的最明显的问题可能是页面没有正确重定向。我的意思是laravel可能没有击中那个控制器的方法,因为没有错误信息我不确定。

可能存在的一个问题是,您已经在代码中的某个位置之前定义了路由并且正在覆盖该路由。如果有任何错误消息请分享。

我可以看到您可以对上面的代码进行的改进很少。 1.改变

@foreach($product as $productAccept)
    <a href="{{URL::route('accept-product')}}/{!! $productAccept->id !!}   ">Accept</a>
@endforeach

@foreach($product as $productAccept)
    <a href="{{ route('accept-product', [$productAccept->id]) }}">Accept</a>
@endforeach

你可以将id作为第二个参数传递给route函数(或URL::route),这是一个辅助函数同样的URL::route

  1. 您可以进行模型绑定
  2. Route::model('product', 'Products');

    ,路线将是

    Route::get('accept/{product}',array(
        'as'=>'accept-product',
        'uses'=>'GoodsController@updateProduct
    ));
    

    您可以在控制器中获取产品

    public function updateProduct($product ) 
    {
        $product->conditions = 'accept';
        $product->save();
    }