如何设置morphTo()参数



morphTo((的方法签名为:

public function morphTo($name = null, $type = null, $id = null, $ownerKey = null)
{
....

在laravel文档示例中,$name、$type、$id、$ownerKey是什么意思?

帖子id-整数name字符串

用户id-整数name字符串

图像id-整数url-字符串imageable_id-整数imageable_type字符串

如果遵循Laravel的命名约定,则不需要向该方法添加任何参数。

以下是morphTo方法的参数分解:

  • $name
    用于定义关系名称(如果与方法名称不同(。这也用于计算数据库中多态字段的名称(如果未作为$type$id传递(。如果$name保留为null,它将使用关系的方法名称,即

    public function imageable() 
    {
    return $this->morphTo();
    }
    

    以上内容与写作相同:

    public function imageable() 
    {
    return $this->morphTo('imageable');
    }
    

    这将告诉Laravel使用imageable_idimageable_type作为数据库字段名。

    public function imageModel()
    

    将导致关系被访问为$model->imageModel,然而,它将使用的数据库字段名称将是image_model_idimage_model_type

  • $type$id
    这些可用于分别覆盖从第一个参数假定的字段名称,例如,如果您的字段名称类似于owner_idowner_model,但您仍然希望关系可成像,则可以执行:

    public function imageable() 
    {
    return $this->morphTo('imageable', 'owner_model', 'owner_id');
    }
    
  • $ownerKey
    这只是相关表上的字段名。您可以使用它来告诉Laravel使用与相关实例定义为$primaryKey的字段名称不同的字段名称。

相关内容

  • 没有找到相关文章

最新更新