パラメータのあるモデルのメソッドに問題があります。私は2 Page
とContentTranslation
を持っています。私は言語に基づいてContentTranslation
を取得したいので、私はPage
モデルに以下の方法を持っている:Laravel - 呼び出し元モデルのメソッドが未定義のメソッドを投げる Database Query Builder
public function contentTranslations($language) {
return $this->hasMany('App\ContentTranslation')->where('language', $language);
}
をし、私は言語に基づいてページを取得するためPageController
方法を持っている:
public function getPagesByLanguage($language)
{
$pages = Page::orderBy('position', 'asc')->get();
foreach ($pages as $page) {
$page->contentTranslations($language);
}
$return $pages;
}
JSON形式で結果を返します(私はLaravelをAPIとして使用しています)。しかし、このアプローチはうまくいきません。
Call to undefined method Illuminate\Database\Query\Builder::contentTranslations()
は、いくつかの時間前、私は、すべての言語のcontentTranslations
を返したかったので、私はcontentTranslations
モデルメソッドのパラメータを持っていないし、すべてがforeachループで$page->contentTranslations;
を呼び出した後にうまく働いた:それは私にエラーがスローされます。なぜ私はパラメータをメソッドに渡すことに問題がありますか?
グレート:
はまたにあなたの関係を変更します'contentTranslations'? '$ q-> where ...'文の後に ' - > select(array( 'slug'、 'language')'を追加しようとしましたが、content_translations配列の0個の項目を返します。 ?:) – user3216673
あなたはこの '$ q-> where( 'language'、$ language) - > select(['page_id'、 'slug'、 'language'];関係作業をする。 –