Laravel Eloquent - 从相关模型中检索特定列

时间:2014-03-08 12:19:34

标签: orm laravel eloquent

我是Laravel的新手,仍然围绕着Eloquent。我有两个模型(A,B),它们具有多对多关系(两个模型中的belongsToMany),并带有以下字段:

A: id, name, text, etc..

B: id, name, description, info, etc...

A_B: id, A_id, B_id

当检索'A'的对象时,我只想检索其相关'B'的'id'和'name',而不是整个'B'对象 - 因为它们可能很大。是一种只从相关模型中检索特定列的方法,还是最好将我的表分开,以便'id'和'name'独立存在?

1 个答案:

答案 0 :(得分:0)

我不确定抓取表'B'中的所有列会不会影响查询的速度,但你可以试试这个:

表'A_B'的模型类

class A_B extends Eloquent {

    public function a(){
        $this->hasMany('A', 'id', 'a_id');
    }

    public function b(){
        $this->hasMany('B', 'id', 'b_id');
    }

}

在表'B'的模型中

class B extends Eloquent {
    //Hide fields from displaying in your query
    protected $hidden = array('description', 'info');
}

在您的控制器中:

//Get all records with A and B
$all = A_B::with('a')->with('b')->get();

return View::make('view')->with('all', $all);

在您看来:

@if($all->count() > 0)
    @foreach($all as $record)
        {{ $record->id }}
        {{ $record->name }}
    @endforeach
@else
    There are no records to be displayed
@endif