Laravel 5.0 - left join összekötés eloquent módra
Sziasztok!
most ismerkedem a laravel model részével és egy összetettebb lekérdezésben kérném a segítségeteket. Lényegében ezt szeretném megvalósítani eloquent összekötéssel:a model rétegek pedig (app/Models):Eddig már sikerült eljutnom:de ez még mindig csak egy left join-os összekötés. Hogyan lehetne ezt úgy módosítani, hogy a modellekben létrehozott összekötéseket (hasMany/belongsTo) használja?
Köszönöm!
■ most ismerkedem a laravel model részével és egy összetettebb lekérdezésben kérném a segítségeteket. Lényegében ezt szeretném megvalósítani eloquent összekötéssel:
- SELECT
- news_contents.news_id,
- news_contents.title,
- news_contents.seo_url,
- site_pages.page_url
- FROM
- news
- LEFT JOIN
- news_contents
- ON
- news.news_id = news_contents.news_id
- LEFT JOIN
- site_pages
- ON
- site_pages.language_id = news_contents.language_id
- WHERE
- news_contents.language_id = :language_id &&
- site_pages.page_id = :page_id
- ORDER BY
- news.create_date
- class News extends Model
- {
- /**
- * The table associated with the model.
- *
- * @var string
- */
- protected $table = 'news';
- /**
- * Primary key.
- *
- * @var int
- */
- protected $primaryKey = 'news_id';
- public function NewsContents()
- {
- return $this->belongsTo('App\Model\NewsContents');
- }
- }
- class NewsContents extends Model
- {
- /**
- * The table associated with the model.
- *
- * @var string
- */
- protected $table = 'news_contents';
- /**
- * Primary key.
- *
- * @var int
- */
- protected $primaryKey = 'nl_id';
- public function news()
- {
- return $this->hasMany('App\Model\News', 'news_id');
- }
- public function pages()
- {
- return $this->hasMany('App\Model\Page', 'language_id');
- }
- }
- class Page extends Model
- {
- /**
- * The table associated with the model.
- *
- * @var string
- */
- protected $table = 'site_pages';
- /**
- * Primary key.
- *
- * @var int
- */
- protected $primaryKey = 'page_id';
- public function NewsContents()
- {
- return $this->belongsTo('App\Model\NewsContents');
- }
- }
- $news_list = \App\Models\News::
- select(array('news_contents.news_id', 'news_contents.title', 'news_contents.seo_url', 'site_pages.page_url'))
- ->leftjoin('news_contents','news.news_id','=','news_contents.news_id')
- ->leftjoin('site_pages','site_pages.language_id','=','news_contents.language_id')
- ->where('site_pages.page_id',$current_page_datas->page_id)
- ->where('news_contents.language_id',$language_id)
- ->orderBy('news.create_date', 'asc')
- ->get();
Köszönöm!
közben alakítottam a modelleken...
ergo a "with" mint ha ott se lenne... nincs több ötletem :( tudtok esetleg valamit javasolni? mit rontok el?
köszönöm!