У меня есть 2 таблицы в Laravel, которые имеют свои отношения, и они в большинстве случаев корректно возвращают данные, структуры примерно такие:
Table workers
----------
ConsecutiveNomina| ConsecutiveWork| name| last_name
Эта таблица в поле ConsecutiveNomina
имеет значение 1
для большинства сотрудников и ConsecutiveWork
было бы автоинкрементируемым полем +1, проблема в том, что у работника есть 2
в поле ConsecutiveNomina
.
Моя вторая таблица имеет такую структуру
Table charges
----------
ConsecutiveNomina | ConsecutiveWork| position
Как и предыдущий ConsecutiveNomina
, он имеет значение 1
для большинства, а ConsecutiveWorker
будет автоинкрементируемым полем + 1
Когда сотрудник в таблице Workers
имеет2
в ConsecutiveNomina
их отношение к таблице Charges
должно возвращать данные для ConsecutiveNomina
2 и его номер в ConsecutiveWorkman
, например,
Table workers
----------
ConsecutiveNomina| ConsecutiveWork| name| last_name
----------
1 | 1 | Juan | Gomez
2 | 1 | Pedro | Perez
Table charges
----------
ConsecutiveNomina | ConsecutiveWork| position
----------
1 | 1 | employee
2 | 1 | Manager
Вот как данныераспределяется в базе данных, если ConsecutiveNomina
равно 1
ConsecutiveWork
увеличивается +1, но если 2
начинается с 1 снова только для тех, у кого 2
в ConsecutiveNomina
В большинстве случаевон возвращает данные хорошо, например
$users = Employee::where([['Situacion', '0'], ['ConsecutiveNomina', '1']])->get();
foreach($users as $user){
$user->position->cargoRNET
}
Эта работаЭто отлично, но если вы хотите сделать то же самое для рабочих с ConsecutiveNomina
2 следующим образом
$users = Empleado::where([['Situacion', '0'], ['ConsecutiveNomina', '2']])->get();
foreach($users as $user){
$user->position->cargoRNET
}
В отношениях вместо возврата Manager
, что соответствует этому пользователю, я возвращаю Employee
, так как Manager
и Employee
имеют одинаковое значение ConsecutiveWorkman
, в этом случае будет, например, 1
, мой вопрос заключается в том, как мне в моих отношениях принести мне Manager
или соответствующие данные, когдарабочий имеет 2
в ConsecutivoNomina
.
Я полагаю, что в этот момент данные мне плохо возвращаются, так как оба имеют одинаковое значение CosecutivoTrabajador
, и я возвращаю первое, которое находит, но янужно, чтобы я возвращал в таблице расходов значение ConsecutiveWorker = 1
, но с ConsecutiveNomina = 2
моими моделями
class Employee extends Model
{
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'fldTimeStamp'
];
protected $connection = 'sqlsrv';
protected $table = 'IGNom_Trabajador';
protected $primaryKey = 'Consecutivo_Trabajador';
public function client(){
return $this->belongsTo('App\Client', 'ConsecutivoDpto');
}
public function position(){
return $this->belongsTo('App\Position', 'ConsecutivoTrabajador');
}
}
class Position extends Model
{
protected $connection = 'sqlsrv';
protected $table = 'IGNom_RNET';
protected $primaryKey = 'ConsecutivoTrabajador';
public function employee(){
return $this->hasMany('App\Employee');
}
}