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!