我在Laravel中通过POST进行基本记录更新时遇到了麻烦。
我已捕获数组中的所有帖子数据,如果现有的Order#为0,那么我创建一个新记录(工作正常)。否则我会更新现有记录。
Order.php
class Order extends Eloquent {
public static $table = 'my_orders';
}
routes.php文件
//Handle a new order POST
Route::post('order', array('do' => function() {
$thisOrder = array(
'qty' => Input::get('quantity'),
'desc' => Input::get('description'),
);
$thisOrderID = Input::get('orderNo');
//CHECK FOR NEW OR EXISTING ORDER
if($thisOrderID > 0) {
//THIS FUNCTION SOMEHOW RETURNS THE FUNCTION CALL AND DOESNT CONTINUE PAST
//AND THE RECORD IS NOT UPDATED
$updateOrder = Order::update($thisOrderID, $thisOrder);
}
}
更新: 上面的代码实际上工作。我有一个验证错误,导致函数提前返回。
答案 0 :(得分:20)
而不是这一行:
$updateOrder = Order::update($thisOrderID, $thisOrder);
你需要这样做:
$updateOrder = Order::find($thisOrderID)->update($thisOrder);
使用find()(等于where_id()),您可以从数据库中选择一个特定的行,并通过更新传递新数据。
答案 1 :(得分:3)
您怎么看待这个:
//Handle a new order POST
Route::post('order', array('do' => function() {
$thisOrder = array(
'qty' => Input::get('quantity'),
'desc' => Input::get('description'),
);
$thisOrderID = Input::get('orderNo');
$order = Order::find( $thisOrderID );
//CHECK FOR NEW OR EXISTING ORDER
if( $order ) {
$order->title = 'New order title';
$order->desc = 'New description';
$order->save();
}
}
答案 2 :(得分:1)
$thisOrder = array(
'orderNo' => Input::get('orderNo'),
'qty' => Input::get('quantity'),
'desc' => Input::get('description'),
);
$updateOrder = Order::save($thisOrder);
如果Input :: get('orderNo')没有值将创建其他更新