我喜欢使用MovimentoProdutoUnidade
函数列出movimento_id = 3
的所有hasMany
。
我的模特Movimento
:
use Illuminate\Database\Eloquent\Model;
use App\Unidade;
class Movimento extends Model
{
protected $fillable = [
"movimento", "descricao", "requisitante", "despachante", "data", "unidade_ori_id", "unidade_des_id"
];
protected $table = "movimentos";
public function movimentoProdutoUnidade(){
return $this->hasMany('App\MovimentoProdutoUnidade', 'movimento_id');
}
}
我的模特MovimentoProdutoUnidade
use Illuminate\Database\Eloquent\Model;
use App\Movimento;
class MovimentoProdutoUnidade extends Model
{
protected $fillable = [
"movimento_id", "unidadeProduto_id"
];
protected $table = "movimento_produtounidades";
public function movimento(){
return $this->belongsTo('App\Movimento', 'movimento_id');
}
}
我的控制器:
public function licitacao(Request $request){
$movimentos = Movimento::where('unidade_ori_id', 3)->movimentoProdutoUnidade;
dd($movimentos);
//return view('relatorios.licitacao', compact('movimentos'));
}
dd
函数返回
未定义的属性:Illuminate \ Database \ Eloquent \ Builder :: $ movimentoProdutoUnidade
答案 0 :(得分:2)
您的错误是因为您没有在查询生成器对象上调用first()
,所以您有一个Builder
(没有$movimentoProdutoUnidade
属性的实例)而不是一个实例。 Movimento
模型:
$movimento = Movimento::where('unidade_ori_id', 3)->first();
$movimento_produto_unidade = $movimento->movimentoProdutoUnidade;
但是,如果您想全部使用MovimentoProdutoUnidade
,请尝试“向后思考”:
$movimento_produto_unidade = MovimentoProdutoUnidade::whereHas('movimento', function ($query) {
return $query->where('unidade_ori_id', 3);
})
->get();
答案 1 :(得分:2)
如我的评论所述,请尝试使用first
函数,如下所示:
Movimento::where('unidade_ori_id', 3)->first()->movimentoProdutoUnidade;
请始终在条件后使用get()
,first()
或find()
函数从数据库中提取数据。
看看这个link