Как перенести данные из таблицы Mysql или из DataTables в другую таблицу Mysql в Laravel?
Эта вторая часть кода показывает, что данные удаляются из первой таблицы после завершения переноса. Первая часть - это мой вопрос, он должен быть в той же функции и событии.
Вид
$(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.info( 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';
}
}
Вот результат:
Вы пытаетесь решить эту проблему, как показывает Ларадокс? laravel.com/docs/5.7/eloquent#вставка-и-обновление-моделей
@ Джаспер Хелмих, можешь показать мне код для этого?
Зачем вам использовать js на стороне клиента при передаче данных между таблицами MySQL?
@Shadow клиент отправляет только свой идентификатор, но передача данных осуществляется на стороне сервера в той же функции Commande, что и удаление.






Итак, теперь у вас есть это,
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' => $pdr->ID_User,
Это работает, но я должен вставить то же количество атрибутов, что и в первой таблице, иначе я получу эту ошибку:
"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, я попробовал твой ответ, посмотри на комментарий.
Я разместил скриншот к вашему ответу, обновите страницу.
Какое модальное имя?
Давайте продолжить обсуждение в чате.
Поскольку у вас есть $pdr, вы можете хранить эти данные в новой таблице через ее модель.