Подтвердить что ты не робот

Синтаксис обновления Laravel - обновление записи с помощью массива

У меня возникли проблемы с базовым обновлением записи через POST в 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);
    }
}

Обновление: Приведенный выше код действительно работает. У меня была ошибка проверки, которая заставляла функцию возвращаться раньше.

4b9b3361

Ответ 1

Вместо этой строки:

$updateOrder = Order::update($thisOrderID, $thisOrder);

Вам нужно сделать:

$updateOrder = Order::find($thisOrderID)->update($thisOrder);

С помощью find() (который равен where_id()) вы выбираете определенную строку из базы данных, а при обновлении вы передаете новые данные.

Ответ 2

Что вы думаете об этом:

//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();
    }
}

Ответ 3

erm, я предлагаю сделать это таким образом, если $thisOrder включает ключ, он просто обновит запись, иначе он просто создаст новую запись.

$thisOrder = array(
     'orderNo' => Input::get('orderNo'),
     'qty' => Input::get('quantity'),
     'desc' => Input::get('description'),
);

$updateOrder = Order::save($thisOrder);

если Input:: get ('orderNo'), никакое значение не будет создано еще обновление