2016-05-09 9 views
0

この関係を設定する方法を理解しようとしています。雄弁ルーメンを使用する。私は2つのテーブルを持っています。リスト表。これにはコンソールが含まれています。私はemumまたはプレーンテキストを望んでいないので、コンソールテーブルにそれを抽出したい。コンソール1、コンソール2などですが、私は何らかの理由でマッチする関係を得ることができません。Eloquentは関係に属していません

Listing Table: 
id: 1 | console_id: 3 
id: 2 | console_id: 4 
id: 3 | console_id: 3 
id: 4 | console_id: 2 

Console Table: 
id: 1 | console: Console 1 
id: 2 | console: Console 2 
id: 3 | console: Console 3 

今私が持っている私のリストのモデルでは:私はあなたのクラスではないことができると思い

public function console() 
{ 
    return $this->belongsTo('App\Console'); 
} 

関係が壊れているか、私はこの関係が相互に接続すべきか理解していないのです...

答えて

1

コンソール名、cuz LaravelにはConsole名前空間、またはオートローダーがロードしようとするクラスがあります。

1)ConsoleItemような何かにあなたのコンソールクラスの名前を変更し

2)私たちはテーブル構造を変更したくないcuzを)(正確には、次のようにタイプフィールドをそれを書くようにしてください:

()を使用してコンソールを呼び出すことによって、それを得るために
public function console() 
{ 
    return $this->belongsTo('App\ConsoleItem', 'console_id', 'id'); 
} 

3):

$Listings = Listing::with(['console'])->whereConsoleId(3)->get(); 
foreach($Listings AS $Listing) { 
    echo 'Listing: '.$Listing->id.' | Console: '.$Listing->console->console."<br/>"; 
} 

それが」まだ動作していない、なぜ分析する必要があります。

あなたのモデルのファイルの内容を追加してください。

4)クリーンオートローダキャッシュ使用してCLIが作曲し、清潔などのもののためにオートローダをredumpするコマンド:

php artisan clear-compiled 
composer dump-autoload 

しかし!

<?php namespace App\Models; 

use Illuminate\Database\Eloquent\Model; 

class Listing extends Model { 

    protected $table = 'listing'; 
    public $timestamps = false; 

    public function console() { 
    return $this->belongsTo('App\Models\Console', 'console_id'); 
    } 
} 

は彼らに内部のコントローラを使用するには、次のように

<?php namespace App\Models; 

use Illuminate\Database\Eloquent\Model; 

class Console extends Model 

はそう、あなたのリストは次のようになります。アプリ/モデルフォルダにあるようにあなたのモデルを持っており、このようなコードを持っている方が良いでしょう。

use App\Models\Listing; 

スクリーンショットをチェックしてください:http://joxi.ru/82QWW0f1a4YXrd

+0

OK。だから、App \を追加すると、特に関係の問題が修正されました!しかしながら。 (私はAPIを構築しようとしています)、リスト:: all()と言うと、数値の代わりにテキストを引っ張ってしまうのが大好きです。 – Citti

+0

このように使用します。リスト:::(['console']) - > get();何千ものデータを持つテーブルの場合、私はこれを次のように使用することをお勧めします:Listing :: with(['console']) - > paginate(50);次のようなリクエストを送信することで、より賢明にAPIを使用させることができます。http://somesite.com/api/listing?page=2これにより、次の50要素が自動的に返されます。 – num8er

+0

hmmだから、$ listing =リスト::(['コンソール']) - > get(); dd($リスト);まだIDと名前を返しません... – Citti

関連する問題