Проблемы вызова отношений в Laravel - PullRequest
0 голосов
/ 21 октября 2018

У меня проблемы с вызовом отношений в laravel, у меня 4 таблицы: пользователи, билеты, магазины, статусы.и у меня есть отношение @OneToMany в Users to Tickets (1 пользователь имеет много билетов).другие отношения - @OneToOne (1 билет имеет 1 магазин и статус).

Теперь у меня есть 6 билетов в моей таблице и 4 пользователя, я могу распечатать связь с 4 первыми билетами, но когда я хочучтобы позвонить в билет 5 или 6, отношения исчезают.То же самое с хранилищем и статусом. Я могу распечатать взаимосвязь, в то время как идентификатор заявки не превышает количество элементов, которые у меня есть в моей таблице.

это мои модели: Модель пользователя:

class User extends Authenticatable
{
    use Notifiable, HasRoles;

    protected $fillable = [
        'id','name', 'email', 'password',
    ];

    protected $hidden = [
        'password', 'remember_token',
    ];

    public function tickets()
    {
        return $this->hasMany(Ticket::class, 'usuario_id');
    }
}

Модель билета:

class Ticket extends Model
{
    protected $fillable = [
        'comentarios', 'falla', 'modelo', 'no_serie', 'monto', 
'usuario_id', 'status_id', 'store_id'
    ];

    public function user()
    {
        return $this->belongsTo(User::class, 'id');
    }
    public function store()
    {
        return $this->hasOne(Store::class, 'id');
    }
    public function status()
    {
        return $this->hasOne(Status::class, 'id');
    }
}

Модель магазина:

class Store extends Model
{

    protected $table = "stores";
    protected $primaryKey = 'id';
    public $timestamps = false;

    protected $fillable = [
        'sucursal', 'dirección'
    ];

    public function ticket()
    {
        return $this->belongsTo(Ticket::class, 'store_id');
    }
}

Модель состояния:

    class Status extends Model
{

    public $timestamps = false;
    protected $fillable = [
      'status'
    ];

    public function ticket()
    {
        return $this->belongsTo(Ticket::class, 'status_id');
    }
}

Контроллер:

$tickets = Ticket::all();



    return view('Admin.index', compact('tickets'));

Просмотр

@foreach($tickets as $ticket)
    <li>{{ $ticket->user }}</li>
@endforeach

Результат:

Результат foreach

В представлении я вызываю все билеты ($тикеты), и для каждого тикета я печатаю взаимосвязь (пользовательская функция).Но в результате вы можете увидеть, что просто напечатайте первые 4 взаимосвязи (количество моих пользователей), если я добавлю 1 пользователя, появится взаимосвязь в 5-м билете.Та же проблема с другими таблицами (хранилище и статус).

Ответы [ 2 ]

0 голосов
/ 21 октября 2018

in Ticket model Вы должны изменить функцию на
public function user() { return $this->belongsTo(User::class, 'usuario_id', 'id'); }

или просто public function user() { return $this->belongsTo(User::class); }

0 голосов
/ 21 октября 2018

Заменить user() отношение в Ticket moedel на:

public function user()
{
    return $this->belongsTo(User::class, 'usuario_id', 'id');
}
...