BadMethodCallException with message'调用未定义的方法Illuminate \ Database \ Query \ Builder :: toArray()'

时间:2016-06-14 06:28:24

标签: php laravel laravel-5 laravel-5.2

我正与@Jeffrey_way系列的Laracasts合作 Many to Many Relations (With Tags)

以下是我使用Laravel Tinker在CMD中编写的代码:

执行最后一行代码($article->tags()->toArray();

虽然我的代码似乎一切正常但仍然出现以下错误:

BadMethodCallException with message 'Call to undefined method Illuminate\Database\Query\Builder::toArray()'

任何帮助将不胜感激:)

3 个答案:

答案 0 :(得分:4)

如果你想真正"得到"关系数据,你不要将括号tags括起来。这样可以正常工作:

$article->tags->toArray();

当你需要"查询"时,你需要加上括号。到该集合(例如同步,保存,附加)。

参考:https://laravel.com/docs/5.1/eloquent-relationships#many-to-many

答案 1 :(得分:1)

请改为尝试:

$article->tags()->all()->toArray();

tags()的基础可能是Query\Builder对象,它表示尚未运行的查询。相反,您需要一个Collection对象,该对象是一个已运行的查询,可在其上调用toArray()->all()就是这样一种调用,它通过实际运行查询将查询构建器转换为集合。

答案 2 :(得分:0)

我遇到了同样的问题,并通过添加get()

解决了

例如:

$article->tags()->get()->toArray();

希望这对某人有帮助:)