Здравствуйте!
Требуется создать табель вывода автомобилей на смену.
Есть парк автомобилей. Каждый отправляется на смену в день(водитель1) и ночь(водитель 2), каждый день.
Как организовать такой табель.
Что мне пришло в голову:
Создать таблицу с столбцами по датам (например:
| name_car | дата 1 | дата 2 | ..... | дата 7 |
), составил график.
Позже средствами Yii делать Alter table и добавляю еще 7 столбцов (на следующую неделю). И т.д.
Как в этом случает быть с Моделью. Как валидировать столбцы с датами которые еще только будут созданы?
Может у кого есть лучшие варианты, буду рад.
Помогите с структурой Табеля и Model
Re: Помогите с структурой Табеля и Model
По логике у вас есть таблица автомобилей и таблица водителей, если они не связаны в одну.iZacNT писал(а): ↑2021.05.05, 11:31 Здравствуйте!
Требуется создать табель вывода автомобилей на смену.
Есть парк автомобилей. Каждый отправляется на смену в день(водитель1) и ночь(водитель 2), каждый день.
Как организовать такой табель.
Что мне пришло в голову:
Создать таблицу с столбцами по датам (например:
| name_car | дата 1 | дата 2 | ..... | дата 7 |
), составил график.
Позже средствами Yii делать Alter table и добавляю еще 7 столбцов (на следующую неделю). И т.д.
Как в этом случает быть с Моделью. Как валидировать столбцы с датами которые еще только будут созданы?
Может у кого есть лучшие варианты, буду рад.
Далее в другую таблицу вставляются сведения "автомобиль" (car_id), "водитель" (driver_id) и дата (возможно диапазон) с временем.
И чтобы составить график у вас в эту таблицу вносятся сведения.
Итоговая таблица: id, car_id, driver_id, date (либо date_from, date_to)
По итогу можно ответить на вопросы:
Сколько работал определенный водитель?
Сколько работал определенный автомобиль?
Re: Помогите с структурой Табеля и Model
unknownby писал(а): ↑2021.05.05, 12:51 По логике у вас есть таблица автомобилей и таблица водителей, если они не связаны в одну.
Далее в другую таблицу вставляются сведения "автомобиль" (car_id), "водитель" (driver_id) и дата (возможно диапазон) с временем.
И чтобы составить график у вас в эту таблицу вносятся сведения.
Итоговая таблица: id, car_id, driver_id, date (либо date_from, date_to)
По итогу можно ответить на вопросы:
Сколько работал определенный водитель?
Сколько работал определенный автомобиль?
unknownby Спасибо! За основу взял ваш Вариант.
В итоге динамически создаю DataColumn в цикле, с наименованием в виде Даты. В значении ячейки вывожу фамилии водителей.
https://ibb.co/Lk8WJxH
Код: Выделить всё
<?php $columns = [];
$dateSearchFrom = time()-(48*60*60);
$dateSearchFrom = date('Y-m-d 00:00:00',$dateSearchFrom); //For 00:00:00 from Eny Time
$dateSearchFrom = strtotime($dateSearchFrom); //to Integer
for ($i=0; $i<7; $i++){
$dateSearchFrom = $dateSearchFrom+(24*60*60);
$dateSearchTo = date('Y-m-d 23:59:59',$dateSearchFrom); //For 23:59:59 from Eny Time
$dateSearchTo = strtotime($dateSearchTo); //to Integer
array_push($columns, [
'attribute' => 'date'.$i,
'header'=> date('d.m.Y', $dateSearchFrom),
'format' => 'raw',
'value' => function($data) use ($dateSearchFrom, $dateSearchTo) {
$result = $data->getWorkDriversOnCar($data->car_id,$dateSearchFrom, $dateSearchTo );
if (!empty($result->day)){
$dName ="<i class=\"fa fa-sun-o\"></i> ".$data->getDriverName($result->day);
}else{
$dName="Нет";
}
if (!empty($result->night)){
$nName ="<i class=\"fa fa-moon-o\"></i> ".$data->getDriverName($result->night);
}else{
$nName="Нет";
}
return $dName."<br /><br />".$nName;
},
]
);
}
?>
<?= GridView::widget([
'dataProvider' => $dataProvider,
//'filterModel' => $searchModel,
'columns' => array_merge([
['attribute' => 'car_id',
'value' => function($data){
return $data->getCar($data->car_id);
}],
// ['class' => 'yii\grid\ActionColumn']
],$columns)
,
]); ?>