【问题标题】:Laravel functions in pivot models?枢轴模型中的Laravel函数?
【发布时间】:2020-05-06 08:29:48
【问题描述】:

我们有两个相互关联的表。

用户预订

枢纽模型 UserBooking 位于它们之间。

我们有一个函数可以检查 UserBooking 的当前记录中是否还有特定值。

这个函数应该在哪里? 在 user 模型中还是在 pivot 模型中?

如果这个函数从 UserBooking 返回一些东西,我猜它应该嵌套在那里。 我如何在 Laravel 中调用这个函数?

这是 Laravel 中常见的模式吗?最佳做法是什么?

【问题讨论】:

  • 据我了解您的问题,您想要那些没有或有预订的用户?
  • 并非如此。我想知道在运行查询时是否可以从数据透视模型运行特定函数。特别是当函数基于这种关系时。 User::with('booking')->pivot-> 来自枢轴模型的函数 类似这样的
  • 不确定您的期望。如果你想从 pivot 中查询,那么你可以使用 wherePivot 函数laravel.com/docs/6.x/eloquent-relationships#many-to-many
  • 如果你想扩展数据透视模型然后 class UserBooking 扩展 MorphPivot { // 一些函数 }

标签: laravel function design-patterns model relation


【解决方案1】:

如前所述,如果你想扩展枢轴模型,那么

use Illuminate\Database\Eloquent\Relations\MorphPivot;
class UserBooking extends MorphPivot
{
   // some functions
}

在关系中

public function bookings()
{
   return $this->morphToMany(Booking::class, 'user_booking')->using(UserBooking::class)->withPivot(['booking', 'user', 'data']);
}

注意:我将它用于枢轴转换,我不将它用于任何功能。我想它会对你有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-03
    • 1970-01-01
    • 1970-01-01
    • 2014-08-17
    • 2017-05-24
    • 2016-01-23
    • 1970-01-01
    相关资源
    最近更新 更多