Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel BelongsTo类的create方法在哪里?_Laravel_Eloquent - Fatal编程技术网

Laravel BelongsTo类的create方法在哪里?

Laravel BelongsTo类的create方法在哪里?,laravel,eloquent,Laravel,Eloquent,我有一个上传的通用类 <?php namespace App; use Illuminate\Database\Eloquent\Model; class File extends Model { protected $guarded = ['id']; } 这并不完全符合预期,但它会在数据库中创建文件模型。为什么? $this->avatar()。我检查了类、包含的特征以及它扩展的关系类 那么到底发生了什么,创建新模型的代码在哪里 我尝试使用一个ReflectionMet

我有一个上传的通用类

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class File extends Model
{
    protected $guarded = ['id'];
}
这并不完全符合预期,但它会在数据库中创建
文件
模型。为什么?

$this->avatar()。我检查了类、包含的特征以及它扩展的
关系

那么到底发生了什么,创建新模型的代码在哪里


我尝试使用一个
ReflectionMethod
但是当
$this->avatar()->create()
工作时,
新的ReflectionMethod($this->avatar(),'create')
返回一个
ReflectionException
和消息
Method illighted\Database\elount\Relations\BelongsTo::create()不存在

用于
belongsTo()
的方法应该是
保存()
,而不是
创建()
。确保将
文件
类作为参数传递:

$this->avatar()->save(new File([
   'path' => $path,
]));

没有在belongsTo关系上保存实体的方法。创建实体后,可以将其与模型关联

$avatar = File::create([...]);
$this->avatar()->associate($avatar)->save();

为了允许查询关系,将未定义的方法调用传递给具有create方法的雄辩构建器实例

所有关系都扩展了关系类,该类定义:

public function __call($method, $parameters)
{
    if (static::hasMacro($method)) {
        return $this->macroCall($method, $parameters);
    }

    $result = $this->query->{$method}(...$parameters);

    if ($result === $this->query) {
        return $this;
    }

    return $result;
}

这会引发异常,根本没有这样的方法。但主要的问题是,我在代码中也找不到
create
方法,但它不知怎的起作用了。我知道这些方法并不存在。问题是-为什么
create
方法有效?@Džuris我已经添加了有关这方面的详细信息。您可以始终使用调试器或回溯跟踪跟踪跟踪,或者只查看类和父类本身。
public function __call($method, $parameters)
{
    if (static::hasMacro($method)) {
        return $this->macroCall($method, $parameters);
    }

    $result = $this->query->{$method}(...$parameters);

    if ($result === $this->query) {
        return $this;
    }

    return $result;
}