我正与@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()'
任何帮助将不胜感激:)
答案 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();
希望这对某人有帮助:)