gpt4 book ai didi

laravel - 如何为自定义数据透视表设置默认属性值?

转载 作者:行者123 更新时间:2023-12-05 05:09:33 28 4
gpt4 key购买 nike

我正在尝试为我的数据透视表中间属性设置默认值。

我希望 $attributes 属性与 Pivot 类一起工作,就像它与 Model 类一起工作一样,因为 Pivot 扩展了 Model。然而,情况似乎并非如此,因为该属性似乎没有任何效果,并且从未分配默认值。

class Client_orm extends Model 
{
public function ranks()
{
return $this->belongsToMany( 'Rank_orm', 'diy_client_rank', 'client_id', 'rank_id' )
->using( 'Client_rank_orm' )
->withPivot( 'thedate', 'notes' );
}
}

class Rank_orm extends Model
{
public function clients()
{
return $this->belongsToMany( 'Client_orm', 'diy_client_rank', 'rank_id', 'client_id' )
->using( 'Client_rank_orm' )
->withPivot( 'thedate', 'notes' );
}
}

class Client_rank_orm extends Pivot
{
protected $attributes = array(
'thedate' => 'some default value',
'notes' => 'some default value',
);
}

我希望使用此代码,任何省略的数据透视表属性都将自动设置为默认值。但是,当属性被省略时,我得到以下 Illuminate\Database\QueryException:

一般错误:1364 字段“thedate”没有默认值

我意识到我可以更改 SQL 结构以接受 NULL 值或设置默认值,但如果没有其他方法通过模型定义设置默认值,那将是最后的手段。

如有任何帮助,我们将不胜感激!

最佳答案

原来这个还没有实现。有一个封闭的提案:https://github.com/laravel/ideas/issues/872

目前你只能使用 wherePivot() 功能,它实际上设置了默认属性,但它的主要目的是过滤,所以你仍然不能在没有过滤的情况下设置默认值,这对我来说很奇怪。 https://github.com/laravel/framework/pull/22867

关于laravel - 如何为自定义数据透视表设置默认属性值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57447325/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com