我不明白为什么我那雄辩的关系不起作用。我有相关的网格和详细表(es )。grid.id = details.order_id)。这适用于前两个表,但不适用于几乎是第一个表副本的其他两个表。
工作关系代码:
OrderGrid模型:
use HasFactory;
protected $table = 'orders_grid';
protected $fillable = [
'user_id',
// more data
];
public function order_detail()
{
return $this->hasMany('App\Models\OrderDetail');
}OrderDetail模型:
use HasFactory;
protected $table = 'orders_detail';
protected $fillable = [
'order_id',
// more data
];
public function order_grid()
{
return $this->belongsTo('App\Models\OrderGrid', 'order_id', 'id');
}在控制器中
$data_details = OrderDetail::where('order_id', $id)->get();在望
$data_details->first()->order_grid->id
// so i can get the ID from the related table

,现在,我有两个更相似的模型,它们的关系不起作用:
OrderGrid模型2
use HasFactory;
protected $table = 'orders_grid_jde';
protected $fillable = [
'total_order',
// more data
];
public function detail_jde()
{
return $this->hasMany('App\Models\OrderDetailJde');
}OrderDetail模型2:
use HasFactory;
protected $table = 'orders_detail_jde';
protected $fillable = [
'order_jde_id',
];
public function grid_jde()
{
return $this->belongsTo('App\Models\OrderGridJde', 'order_jde_id', 'id');
}在主计长:
$data_details = OrderDetailJde::where('order_jde_id', $id)->get();考虑到:
$data_details->first()->order_jde_id->id如果我转储($data_details->first()) relations是空数组,就不会像前面显示的那样,这是行不通的。
工作关系上的另一个奇怪行为:如果我将$data_details->first()转储到控制器中,则不会看到这种关系,但如果在视图中这样做,它就会显示在屏幕上。
抱歉,这篇文章太长了,尽量让人理解。
发布于 2022-09-30 16:04:24
在Controller中,这样调用关系:
$data_details = OrderDetailJde::where('order_jde_id', $id)->with("grid_jde")->get();查看:$data_details->first()
它会给所有的神。
现在应该管用了。
发布于 2022-09-30 15:46:25
在有错误的视图中,您将直接访问名为order_jde_id的字段,而不是访问关系grid_jde。
技巧:
如果您计划在视图中使用这些关系,您应该急切地加载这些关系。
$books = Book::with('author')->get();https://laravel.com/docs/9.x/eloquent-relationships#eager-loading
https://stackoverflow.com/questions/73910439
复制相似问题