Попытка обновить какое-то поле не работает в Laravel 6.0 - PullRequest
0 голосов
/ 10 января 2020

* Я пытался обновить какое-то поле своей базы данных со своей страницы, но когда я попробовал, он не обновляет элемент, просто удаляю его, я не знаю, почему элемент уничтожается, а не обновляет его, как Могу ли я решить ее *

  • Ниже я разрешу код, который не обновляет информацию, и мой index function(), потому что код находится внутри этой функции, также моя модель Entrada и моя таблица Entrada

* index function *

public function index(Request $request,$id_entrada,$id_venta_entrada,$id_costo,$correo)
    {   
        $detalle_entrada=new Detalle_venta_entrada();
        $detalle_entrada->precio=$id_costo;
        $detalle_entrada->fk_venta_entrada=$id_venta_entrada;
        $detalle_entrada->fk_entrada=$id_entrada;
        $detalle_entrada->save();
        $ventas=new Venta();
        $ventas->monto_total=$id_costo;
        $now = new \DateTime();
        $ventas->fecha_venta=$now->format('d-m-Y');
        $ventas->fk_cliente_natural=1;
        $sub = DB::select(DB::raw("SELECT precio_entrada from entrada WHERE id_entrada='$id_entrada'"));
        $subtotal = $sub[0]->precio_entrada;
        $monto = DB::select(DB::raw("SELECT precio from detalle_venta_entrada WHERE fk_venta_entrada='$id_venta_entrada'"));
        $monto_total = $monto[0]->precio;
        $ventas->save();
        $id = DB::select(DB::raw("SELECT Max(id_venta) as venta_id from venta"));
        $id_venta = $id[0]->venta_id;
        Entrada::where(['id_entrada'=>$id_entrada])->update(array(
            'disponible'=>'true',
        ));
        $detalle_venta_entrada = DB::select(DB::raw("SELECT id_detalle_entrada,precio,
                                                    (select numero_entrada from entrada where id_entrada='$id_entrada'),
                                                    (select fecha from venta_entrada where id_venta_entrada='$id_venta_entrada'),
                                                    (select monto_total from venta_entrada where id_venta_entrada='$id_venta_entrada' and fk_cliente_natural=1),
                                                    (select primer_nombre from cliente_natural where id_cliente_natural=1)
                                                    FROM detalle_venta_entrada WHERE fk_venta_entrada='$id_venta_entrada'and fk_entrada='$id_entrada'"));
        return view ('home.misOrdenes')->with('detalle_venta_entrada',$detalle_venta_entrada)
                                       ->with('id_entrada',$id_entrada)
                                       ->with('id_venta_entrada',$id_venta_entrada)
                                       ->with('detalle_entrada',$detalle_entrada)
                                       ->with('subtotal',$subtotal)
                                       ->with('monto_total',$monto_total)
                                       ->with('id_venta',$id_venta)
                                       ->with('correo',$correo);
    }

* код, который не обновляется *

Entrada::where(['id_entrada'=>$id_entrada])->update(array(
            'disponible'=>'true',
        ));

* Это мой стол Entrada *

create table Entrada(
        ID_Entrada serial,
        Numero_Entrada integer not null,
        Precio_Entrada real not null,
        Disponible boolean not null,
        FK_Evento integer not null,
        constraint pk_ID_Entrada primary key (ID_Entrada),
        constraint fk_FK_Evento_Entrada foreign key(FK_Evento) references Evento(ID_Evento) on delete cascade on update cascade
    );

* Модель Entrada *

class Entrada extends Model
{
    protected $primaryKey = 'id_entrada';
    protected $table = 'entrada';
    public $incrementing = false;
    protected $fillable = ['id_entrada','numero_entrada','precio_entrada','disponible','fk_evento'];
    public $timestamps = false;
}

Ответы [ 5 ]

0 голосов
/ 10 января 2020

Код работает, дело в том, что я не заметил, что когда я обновляю Entrada, отправьте его в конец списка в моем bd, так что я подумал, что он не работает, потому что у меня много регистров и я изменяю позиция обновленного

0 голосов
/ 10 января 2020

Я считаю, что вы включили модель "Entrada" в топ класса. Если нет, то сначала включите его, потому что вы явно создали новый экземпляр для «Detalle_venta_entrada» и «Venta», а не для «Entrada»

Убедитесь, что значение атрибута $ id_entrada правильно передано этому методу или нет

Сначала попробуйте следующий код в повозке

php artisan tinker

Entrada::where('id_entrada', $id_entrada)->first(); ([] не требуется, если у вас есть единственное условие where, следовательно, оно удалено).

Если вы получите результат, а затем обновите его.

Всегда имейте условие перед обновлением любых данных.

например)

$entradaData = Entrada::where('id_entrada', $id_entrada)->first();
if(filled($entradaData))
{
  Entrada::where('id_entrada', $id_entrada)->update(
        ['disponible'=>'true']
    );
}
0 голосов
/ 10 января 2020

В , где цепной метод, вы передаете массив. Я никогда не видел этого в Laravel документации. Улучшите ваш код, как показано ниже:

    Entrada::where("id_entrada", $id_entrada)->update(array(
        'disponible'=>'true'
    ));
0 голосов
/ 10 января 2020

Измените свой код ниже: и посмотрите, работает ли он.

$detalle_entrada = new Detalle_venta_entrada();
$detalle_entrada->precio = $request->get('id_costo');
$detalle_entrada->fk_venta_entrada = $request->get('id_venta_entrada');
$detalle_entrada->fk_entrada = $request->get('id_entrada');
$detalle_entrada->save();
0 голосов
/ 10 января 2020
Entrada::where(['id_entrada'=>$id_entrada])->update(array(
        'disponible'=>'true',
    ));`

Попробуйте код ниже:

$response = Entrada::where(['id_entrada'=>$id_entrada])->first();
$response->disponible = 'true';
$response->update();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...