如何将数据传输到mysql表?

时间:2019-02-13 12:40:52

标签: php jquery mysql ajax laravel

如何将数据从Mysql表或DataTables传输到Laravel中的另一个Mysql表?

此代码的第二部分显示在传输完成后从第一个表中删除数据。第一部分是我的问题,应该在相同的功能和事件中。

查看

$(document).on('click', '#Confirm', function(){
    var table = $('#panier_table').DataTable();
    var i = 2;    
    var colId = table.column( 0 ).index();

    var id = [];
    if(confirm("Êtes-vous sûr de vouloir confirmer cette commande?"))
    {
        for (var i = 0; i < table.data().count(); i++)
        {
            var rowId = table.row( i ).index();
            console.log( table.cells({ row: rowId, column: colId }).data()[0] );
            id.push(table.cells({ row: rowId, column: colId }).data()[0]);
        }                            
        if(id.length > 0)
        {
            $.ajax({
                url:"{{ route('ajaxdata.commande')}}",
                method:"get",
                data:{id:id},
                success:function(data)
                {
                    alert(data);
                    $('#panier_table').DataTable().ajax.reload();
                }
            });
        }
    }
});

控制器:

function Commande(Request $request)
{
    $pn = $request->input('id');
    $pdr = Panier::whereIn('id', $pn);
    if($pdr->delete())
    {
        echo 'Commande Confirmée';
    }
}

这是结果:

enter image description here

2 个答案:

答案 0 :(得分:1)

所以您现在有了这个

function Commande(Request $request)
{
    $pn = $request->input('id');
    $pdr = Panier::whereIn('id', $pn);
    if($pdr->delete())
    {
       echo 'Commande Confirmée';
    }
}

由于您在此行的$ pdr中存储了数据

 $pdr = Panier::whereIn('id', $pn);

有了这些数据,您可以将其存储在另一个表中,假设我想将其传输到用户表,我可以尝试以下操作

 User::create([
    'name' => $pdr->name,
    'email' => $pdr->email,
 ])

为每个列分配要连接的数据

因此您的最终功能将看起来像这样

function Commande(Request $request)
{
    $pn = $request->input('id');
    $pdr = Panier::whereIn('id', $pn);

    $user = User::create([
       'name' => $pdr->name,
       'email' => $pdr->email,
    ])
    if($user){
       if($pdr->delete())
       {
          echo 'Commande Confirmée';
       }        
    }

}

将用户更改为您喜欢的模型

答案 1 :(得分:0)

这是可行的,但是我必须插入第一个表中相同数量的属性,否则会出现此错误:

"SQLSTATE[21S01]: Insert value list does not match column list: 1136 Column count doesn't match value count at row 1 (SQL: INSERT into Commandes (ID_User, ID_Pi ▶"

我只需要3个属性(ID_User, ID_Piece, QTE)

function Commande(Request $request)
{
    $pn = $request->input('id');
    $pdr = Panier::whereIn('id', $pn);

    $bindings = $pdr->getBindings();
    $insertQuery = 'INSERT into Commandes (id, ID_Ligne, ID_Piece, ID_User, Piece, QTE, created_at, updated_at) '
    . $pdr->toSql();

    \DB::insert($insertQuery, $bindings);

       if($pdr->delete())
       {
          echo 'Commande Confirmée';
       }            

}