【问题标题】:How to access one column related to another table Laravel 5.1如何访问与另一个表 Laravel 5.1 相关的一列
【发布时间】:2016-03-13 06:41:37
【问题描述】:

我有 3 个模型,Trials 有一个样本,track 有一个 Trial,我需要访问样本名称,我尝试这样做但收到此错误:

Builder.php 第 2024 行中的 BadMethodCallException:调用未定义 方法 Illuminate\Database\Query\Builder::samples()

控制器:

public function track($id){
        $tracks = track::with('trials')->with('samples')->where('trials_id',$id)->get();

        return view('Tracks.index',compact('tracks'));
    }

样本:

class samples extends Model
{
    protected $fillable = ['variety'];

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

试用:

class trial extends Model
{
    protected $fillable = ['amount','date','comments','code'];

    public function Samples()
    {
        return $this->hasOne('App\samples', 'id', 'samples_id');
    }

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

曲目:

class track extends Model
{
    public function Trials()
    {
        return $this->hasOne('App\trial', 'id', 'trials_id');
    }
}

【问题讨论】:

  • samples() 方法未在 track 模型中定义。
  • 这意味着我需要添加另一个外键来跟踪与样本相关的表?

标签: php mysql laravel laravel-5 laravel-5.1


【解决方案1】:

试试看

$tracks = track::with('trials.samples')->where('trials_id',$id)->get();

参考:-Nested Eager Loading

【讨论】:

  • with('trials.samples') 将加载 trial 和 trial.samples,不需要另一个 with('trials')
猜你喜欢
  • 1970-01-01
  • 2015-09-15
  • 1970-01-01
  • 1970-01-01
  • 2015-10-04
  • 1970-01-01
  • 1970-01-01
  • 2015-02-10
  • 1970-01-01
相关资源
最近更新 更多