Php 克隆不同查询的雄辩模型

Php 克隆不同查询的雄辩模型,php,laravel-4,eloquent,Php,Laravel 4,Eloquent,很抱歉(对所有在此回答的人)修改此问题。这个问题实际上是错的。 $query = User::find(1)->books(); //books() is "return $this->hasMany('Book');" $query_for_counting_history_books = clone $query; $query_for_counting_geography_books = clone $query; $number_of_history_books = $

很抱歉(对所有在此回答的人)修改此问题。这个问题实际上是错的。

$query = User::find(1)->books();  //books() is "return $this->hasMany('Book');"

$query_for_counting_history_books = clone $query;
$query_for_counting_geography_books = clone $query;

$number_of_history_books = $query_for_counting_history_books->where('type', '=', 'history')->count();
$number_of_geography_books = $query_for_counting_geography_books->where('type', '=', 'geography')->count();

$books = $query->paginate(10);
我希望$books被查询为:

从用户id=1限制为10的书籍中选择*

但它的产出是:

从用户id=1、type=“history”和type=“geography”的书籍中选择* 限制10

  • 我是否遗漏了有关克隆的内容
  • 对此解决方案应该做些什么

不确定您的
克隆()为什么不工作-请尝试以下操作:

$query = User::where('confirmed', '=', '1');
$query_for_counting_male = $query->replicate();
$query_for_counting_female = $query->replicate();

由于$query是HasMany的实例,因此应按如下方式进行克隆:

$query\u for\u counting\u history\u books=clone$query->getQuery()

$query\u for\u counting\u geography\u books=clone$query->getQuery()


它对我来说就像预期的那样。你能检查一下你的
illumb\Database\elogent\Builder
是否实现了
\uuu clone()
方法吗?@demoave No,绝对不是replicate完全符合我的要求。克隆除主键之外的所有内容。谢谢