从相关表中获取属性作为外键

时间:2019-12-02 10:45:40

标签: php laravel

我有一个可退回所有票证的控制器。有一个字段user_id,它是User模型的外键。当我请求api时,我不仅要获取user_id还要获取名称。

public function index() : TicketsResourceCollection
{
    $tickets = Ticket::all();

    return new TicketsResourceCollection($tickets);
}

机票迁移:

$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');

2 个答案:

答案 0 :(得分:0)

在您的机票模型中:

public function user() 
{
    return $this->hasMany('App\Ticket');
}

在您的用户模型中:

public function tickets()
{
    return $this->belongsTo('App\User');
}

通过这种方式,您可以与用户获得门票:

$tickets = Ticket::all()->with('users');

或者您可以获取特定用户的所有票证:

$user = User::find(1);

$tickets = $user->tickets;

答案 1 :(得分:0)

如果您不必定义关系:

$tickets = Ticket::join('users', 'users.id', '=', 'ticket.user_id')->where('ticket.user_id', 1)->select('ticket.*', 'users.*')->get();

但是我建议使用laravel关系是好东西。

  

https://laravel.com/docs/6.x/eloquent-relationships