В некоторых случаях отношения Laravel возвращают ошибочные данные - PullRequest
0 голосов
/ 01 июля 2019

У меня есть 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');

    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...