2016-06-14 13 views
5

Aşağıda Many to Many Relations (With Tags)BadMethodCallException 'tanımsız yöntem Illuminate Database Sorgu Builder çağır :: ToArray()' ı Laracasts ait @Jeffrey_way serisi ile birlikte çalışıyorum

kullandığım CMD yazdım kodudur laravel Tinker:

kodunun son satırını yürüttükten sonra ($article->tags()->toArray();

herşey yolunda wi gibi gözükse de

herhangi bir yardım çok takdir
BadMethodCallException with message 'Call to undefined method Illuminate\Database\Query\Builder::toArray()' 

:)

cevap

4

İlişkisel veriyi gerçekten "almak" istiyorsanız, parantezi tags alamazsınız. Bu sadece iyi çalışır:

$article->tags->toArray(); 

Sen parantezi koymak sen (takmak tasarruf, Ex senkron.) Bu koleksiyona için "sorgusu" gerektiğinde.

Referans: Şimdi https://laravel.com/docs/5.1/eloquent-relationships#many-to-many

+0

Teşekkür ederim Yigit Kendi aptal başlığımdan parantezler ekliyordum: p eğitim videosu olmamasına rağmen – Hazmat

+0

Hoş geldiniz. Laravel ile eğlenin :) – YigitOzkavci

1

yerine bu deneyin:

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

tags() temelinde muhtemelen temsil eden bir Query\Builder nesnedir hala hata aşağıdaki almak kodumu th ama henüz çalışmadı bir sorgu. Bunun yerine, toArray() numaralı telefonu aramak için çalıştırılan bir sorgu olan bir Collection nesnesine ihtiyacınız vardır. ->all(), sorguyu gerçekten çalıştırarak bir sorgu oluşturucuyu bir koleksiyona dönüştüren böyle bir çağrıdır.

+0

bu hatayı alıyorum: 'mesajla BadMethodCallException 'tanımsız yöntem Illuminate \ Veritabanı çağır \ Sorgu \ Oluşturucu :: hepsi()'' – Hazmat

+0

Tamam deneyin olsun() yerine hepsinden() . Bu işe yaramalı. – delatbabel

+0

Laravel sürümünüze bağlı olarak, tüm() bir koleksiyon veya dizi döndürebilir. Bir dizi döndürürse, o zaman -> toArray() biti gerekmez. – delatbabel

İlgili konular