gpt4 book ai didi

pivot - 拉维尔 : pivot table point to multiple tables

转载 作者:行者123 更新时间:2023-12-04 17:59:22 24 4
gpt4 key购买 nike

假设我有一个 orders 表,它将与另外三个名为 typingstranslates论文 。我知道数据透视表应该有点像 many to many polymorphic relation但这并不是我想要的。我应该如何实现数据透视表?

最佳答案

您将通过名为 orderables 的数据透视表创建与订单和其他三个表的多态关系

// TABLES NEEDED
orders
id - integer

typings
id - integer

translates
id - integer

theses
id - integer

orderables
order_id - integer
orderable_id - integer
orderable_type - string


// MODELS/RELATIONSHIPS NEEDED
class Typing extends Model
{
public function orders()
{
return $this->morphToMany('App\Order', 'orderable');
}
}
class Translate extends Model
{
public function orders()
{
return $this->morphToMany('App\Order', 'orderable');
}
}
class Thesis extends Model
{
public function orders()
{
return $this->morphToMany('App\Order', 'orderable');
}
}
class Order extends Model
{
public function typings()
{
return $this->morphedByMany('App\Typing', 'orderable');
}
public function translates()
{
return $this->morphedByMany('App\Translate', 'orderable');
}
public function theses()
{
return $this->morphedByMany('App\Thesis', 'orderable');
}
}

然后,您可以获得这样的模型的订单:

$thesis = Thesis::find(1);
$orders = $thesis->orders;

反之:

$order = Order::find(1);
$theses = $order->theses;

关于pivot - 拉维尔 : pivot table point to multiple tables,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37437597/

24 4 0