我有一个数据库
一个“使用者”有许多“输入”,而“输入”只有一个“习性”和“情感”,所以我们可以说一个使用者有许多“习性”,也有许多“情感”。
我应该可以做一些类似{{$user-〉input-〉habitos}}的事情,但是由于某种原因我做不到,{{$user-〉input}}可以工作,{{$input-〉habitos}}也可以工作,下面是代码
用户模型:
class User extends Authenticatable
{
use HasApiTokens, HasFactory, Notifiable;
/**
* The attributes that are mass assignable.
*
* @var array<int, string>
*/
protected $fillable = [
'name',
'email',
'password',
'telefone',
'hotmart_id'
];
/**
* The attributes that should be hidden for serialization.
*
* @var array<int, string>
*/
protected $hidden = [
'password',
'remember_token',
];
/**
* The attributes that should be cast.
*
* @var array<string, string>
*/
protected $casts = [
'email_verified_at' => 'datetime',
];
public function input(){
return $this->hasmany(Input::class, 'user_id', 'id');
}
}
输入模型:
class Input extends Model
{
use HasFactory;
public function habito(){
return $this->belongsto(Habito::class, 'habito_id', 'id');
}
public function sentimento(){
return $this->belongsto(Sentimento::class, 'sentimento_id', 'id');
}
public function user(){
return $this->belongsto(User::class, 'user_id', 'id');
}
}
哈比托模型:
class Habito extends Model
{
use HasFactory;
protected $fillable = ['nome', 'categoria'];
public function input(){
return $this->hasmany(Input::class, 'habito_id', 'id');
}
}
我一直在寻找有同样问题的人,但我似乎什么都找不到,提前感谢:)。
1条答案
按热度按时间hxzsmxv21#
我也遇到了同样的问题,嗯...几乎一样。我的Meals有一个带标签的透视表-所以它是一个多对多的关系,标签有一个翻译。
想象一下,当你使用查询“with=tags”来获取数据时,你实际上是根据区域设置(en,de,fr等)来获取标签翻译,所以你通过“meal_tag”透视表,通过“tag”表,最后你到达“tagtranslations”并获取连接到该餐的tag_id的翻译.
我不认为你必须使用这是我怎么做的:
膳食类别:
餐标类:
标记类:
**忽略翻译中间件,因为您不需要它,如果您使用softDeletes,只需使用withTrashed
最后是TagTranslations类:
}
注意我使用的是hasManyDeep,为此你必须安装staudenmeir包:但问题是,即使没有hasManyDeep,Eloquent也应该识别你需要的一切,但如果它是这样工作的,我又有什么资格争论呢?
这对我很有效--如果出了什么问题,我相信这只是一个稍微调整的问题。