Как передать данные в таблицу mysql?

Как перенести данные из таблицы 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';
    }
}

Вот результат:

Как передать данные в таблицу mysql?

Поскольку у вас есть $pdr, вы можете хранить эти данные в новой таблице через ее модель.

Jasper Helmich 13.02.2019 13:42

Вы пытаетесь решить эту проблему, как показывает Ларадокс? laravel.com/docs/5.7/eloquent#вставка-и-обновление-моделей

Oleg Nurutdinov 13.02.2019 13:59

@ Джаспер Хелмих, можешь показать мне код для этого?

user9848967 13.02.2019 14:06

Зачем вам использовать js на стороне клиента при передаче данных между таблицами MySQL?

Shadow 13.02.2019 15:09

@Shadow клиент отправляет только свой идентификатор, но передача данных осуществляется на стороне сервера в той же функции Commande, что и удаление.

user9848967 14.02.2019 11:14
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
5
153
2

Ответы 2

Итак, теперь у вас есть это,

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,

user9848967 14.02.2019 13:48

Это работает, но я должен вставить то же количество атрибутов, что и в первой таблице, иначе я получу эту ошибку:

"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, я попробовал твой ответ, посмотри на комментарий.

user9848967 14.02.2019 13:51

Я разместил скриншот к вашему ответу, обновите страницу.

user9848967 14.02.2019 13:54

Какое модальное имя?

user9848967 14.02.2019 14:08

Давайте продолжить обсуждение в чате.

Jasper Helmich 14.02.2019 14:09

Другие вопросы по теме