BadMethodCallException with message 'Call to undefined method Illuminate\Database\Query\Builder::toArray()'
Solution 1
If you want to actually "get" relational data, you don't put parenthesis arount tags
. This will work just fine:
$article->tags->toArray();
You put parenthesis when you need to "query" to that collection (Ex. sync, save, attach).
Reference: https://laravel.com/docs/5.1/eloquent-relationships#many-to-many
Solution 2
I had the same problem and solved it by adding get()
For example:
$article->tags()->get()->toArray();

Hashmatullah Noorzai
As long as you tried your best, you don't worry about the rest! My love Afghanistan, my home USA... Alhamdulillah <3
Updated on July 09, 2022Comments
-
Hashmatullah Noorzai over 1 year
I am working along with @Jeffrey_way series of Laracasts Many to Many Relations (With Tags)
Below is the code I have written in CMD using Laravel Tinker:
After executing the last line of code (
$article->tags()->toArray();
Although everything seems to be OK with my code but still I get following error:
BadMethodCallException with message 'Call to undefined method Illuminate\Database\Query\Builder::toArray()'
-
Hashmatullah Noorzai over 7 yearsnow I get this error:
BadMethodCallException with message 'Call to undefined method Illuminate\Database\Query\Builder::all()'
-
delatbabel over 7 yearsDepending on your version of Laravel, all() may return either a collection or an array. If it returns an array then you don't need the ->toArray() bit at all.
-
Hashmatullah Noorzai over 7 yearsThank you Yigit I was adding parentheses from my own dumb head :p although it wasn't in the training video