【问题标题】:How to transfer data to the mysql table?如何将数据传输到mysql表?
【发布时间】:2019-07-07 07:15:28
【问题描述】:

如何在 Laravel 中将数据从 Mysql 表或 DataTables 传输到另一个 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';
    }
}

结果如下:

【问题讨论】:

  • 既然有了$pdr,就可以通过它的model把这个数据存到新表中
  • 你会尝试像 Laradocs 节目那样解决这个问题吗? laravel.com/docs/5.7/eloquent#inserting-and-updating-models
  • @Jasper Helmich,你能给我看一下代码吗?
  • 为什么要使用客户端js在MySQL表之间传输数据?
  • @Shadow 客户端只发送他的 ID,但数据传输是服务器端在同一功能 Commande 就像删除。

标签: php jquery mysql ajax laravel


【解决方案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';
       }        
    }

}

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

【讨论】:

  • 我得到了这个:"Undefined property: Illuminate\Database\Eloquent\Builder::$ID_User" 在线:'ID_User' =&gt; $pdr-&gt;ID_User,
【解决方案2】:

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

"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';
       }            

}

【讨论】:

  • @JasperHelmich 我试过你的答案看看评论。
  • 我给你的答案贴了截图,刷新页面。
  • 哪个模态名称?
猜你喜欢
  • 2012-01-03
  • 2015-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多