Красноречивый метод each () возвращает нулевое значение - PullRequest
0 голосов
/ 26 ноября 2018

Этот вопрос относится к Метод Eloquent save () внутри цикла не работает .

КАРТА ПРОЦЕССА: ЗАГРУЗИТЬ ФАЙЛЫ> СОЗДАТЬ ТАБЛИЦЫ С ЗНАЧЕНИЕМ ПО УМОЛЧАНИЮ 0> ПРОДОЛЖИТЬITERATE OVER 0 PARTS (например, если последний 3-> 4,5,6)

Я хочу продолжить добавление изображений в конкретный проект после первой загрузки изображения.

$ input ['id']: содержит значение идентификатора проекта.

Я применяю каждый метод () следующим образом:

*** code part executed after multiple file upload ***

TABLE STATUS AT FIRST STAGE :
+---------+-------------+-----------+
| id      | project_id  | order_id  |  
+---------+-------------+-----------+
| 1       | 15          | 1         |
+---------+-------------+-----------+
| 2       | 15          | 2         |
+---------+-------------+-----------+
| 3       | 16          | 1         |  --> Added in the past
+---------+-------------+-----------+
| 4       | 16          | 0         |  --> Created on first stage** : default 0.
+---------+-------------+-----------+ 
| 5       | 16          | 0         |  --> Created on first stage** : default 0.
+---------+-------------+-----------+


*** code continues ***

$start = Images::select('order_id')->where('project_id', '=', $input['id'])
->orderBy('order_id', 'DESC')->first();  

Images::where('project_id', '=', $input['id'])->where('order_id', '=', 0)->get()
       ->each(function($ord) use (&$start) {
              $ord->order_id = $start++;
              $ord->save();
});

Результаты таблицы после кода, приведенного вышевыполнено (все еще в процессе)

+---------+-------------+-----------+
| id      | project_id  | order_id  |  
+---------+-------------+-----------+
| 1       | 15          | 1         |
+---------+-------------+-----------+
| 2       | 15          | 2         |
+---------+-------------+-----------+
| 3       | 16          | 1         |  --> Added in the past
+---------+-------------+-----------+
| 4       | 16          | 0         |  --> New / Present Action : 1st file 
+---------+-------------+-----------+ 
| 5       | 16          | 0         |  --> New / Present Action : 2nd one
+---------+-------------+-----------+

Ожидание:

+---------+-------------+-----------+
| id      | project_id  | order_id  |  
+---------+-------------+-----------+
| 1       | 15          | 1         |
+---------+-------------+-----------+
| 2       | 15          | 2         |
+---------+-------------+-----------+
| 3       | 16          | 1         |  --> Added in the past
+---------+-------------+-----------+
| 4       | 16          | 2         |  --> New / Present Action : 1st file 
+---------+-------------+-----------+ 
| 5       | 16          | 3         |  --> New / Present Action : 2nd one
+---------+-------------+-----------+

В чем проблема?Неверная логика или каждая ()?я не знаю, но я попытался с foreach, и я получил те же неправильные результаты.Любая помощь будет принята с благодарностью.Спасибо!

Ответы [ 2 ]

0 голосов
/ 26 ноября 2018
$start = Images::select('order_id')->where('project_id', '=', $input['id'])
->orderBy('order_id', 'DESC')->first();  

Возвращает объект Images

$ start-> order_id должен содержать ваш id-номер

0 голосов
/ 26 ноября 2018

Попробуйте получить доступ к свойству id при увеличении.

Images::where('project_id', '=', $input['id'])->where('order_id', '=', 0)->get()
       ->each(function($ord) use (&$start) {
              $ord->order_id = $start->id++;
              $ord->save();
});
...