我使用下面的代码来获取所有相关的模型数据
protected $model = '';
public function getAll()
{
return call_user_func_array([$this->model, "get"], []);
}
它现在的工作,但我怎么能通过call_user_func_array处理链方法?例如:
我需要像:
Model::where('user_id', $user_id)->get();
一个解决方案是(new $ this-> model) - > where();我认为这是一个坏主意。有什么解决方案吗?
答案 0 :(得分:1)
如果需要调用getById getByColumnName方法,可以使用PHP的Magic函数。
在您的基础存储库中:
$client->getClient()
->setDefaultOption('config/curl/' . CURLOPT_SSL_VERIFYPEER, false);
在你的模特中:
public function __call($method, $parameters)
{
if(startsWith($method, 'getBy'))
{
return $this->model->findBy(snake_case(substr($method, 6)), $parameters[0]);
}
else
{
throw new Exception("$method not found!");
}
}
答案 1 :(得分:0)
您可以尝试:
$modelName = $this->model;
$modelName::where('user_id', $user_id)->get();
答案 2 :(得分:0)
call_user_func_array用于低级别调用函数并减少一些我现在不关心的问题,而不是(new $ this-model) - > blob-> blob可以用于正常形式的链。我认为实例化对象的性能比call_user_func_array好。