[英]An object of Eloquent Model call the constructor again when calling get method
我知道 object 的构造函数仅在创建时才第一次调用。
但就我而言,在使用xDebug调查后,我发现尽管在创建时使用$blockId
参数成功调用,但当我调用get()
方法获取数据时,构造函数再次被调用,这一次, $blockId
参数只是一个空数组,因此会导致错误。
我用count()
方法尝试了另一种情况,它就像一个魅力。
这是我上面提到的代码:
$userData = new UserData($blockId);
$results= $userData ->whereIn('Type', request('user_types'))->get(); //causes error
$results1= $userData ->whereIn('Type', request('user_types'))->count(); //works like a charm
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class UserData extends Model
{
const TABLE_NAME = 'user_';
protected $table = self::TABLE_NAME;
public $timestamps = false;
protected $guarded = [];
public function __construct($blockId)
{
parent::__construct();
$this->table .= $blockId;
}
}
我希望你能帮助我知道原因是什么。 提前致谢。
那是行不通的。
查询现有 model 时,引擎盖下有一个(new static)->newQuery()
调用,因此您的数据丢失了。 你应该重新考虑你的流程。
get() 方法返回一个模型数组。 这意味着每个返回的数据库行都会调用构造函数。 将 $blockId 设置为可选参数,或使用带有存在检查的数据属性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.