我正在使用$articles = Article::all();
获取索引页面(使用带有$articles as $article
的foreach)表格中的所有文章。现在我想将这个结果与另一个名为'devices'的表联系起来,并且只想在$ articles中为我的结果添加一个名为'name'的列。
设备的“id”等于我的articles-table中的“device_id”。
我可以用
$articles = DB::table('articles')
->join('devices', 'articles.device_id', '=', 'devices.id')
->select('devices.name','articles.id','articles.text', ...)
->get();
但我不想这样做。有没有更好的选择来处理这个?
提前谢谢你,
quantatheist
答案 0 :(得分:0)
您可以在模型中使用关系
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model as Eloquent;
class Article extends Eloquent{
public function device(){
$this->belongsTo('App\Models\Device');
}
}
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model as Eloquent;
class Device extends Eloquent{
public function articles(){
$this->hasMany('App\Models\Article');
}
}
当你得到$articles = Article::all();
之后
你可以循环阅读文章
foreach($articles as $article){
echo $article->device->name
}
您也可以急切或懒惰加载关系$articles = Article::with('device')->all();
您可以为特定设备拍摄更多的艺术品
Device::find(1)->articles()->get()