我来这里是因为我对口才关系一对多有问题,一周以来我已经测试了很多,但无事可做。我在这里尝试我最后的机会,在此之后,我将尝试数据库:查询生成器,但我更喜欢使用 Eloquent 执行我的代码。
为了简单起见,我想展示 id 任务中使用的不同家具,因此任务具有许多家具。
所以我给你一个问题,我把关系放到我的模型中,当我调用函数 HasMany 时,它返回给我一个空对象......
我在 git bash 上使用 php artisan 修补匠,但经过一千次尝试,它不起作用。 我向您展示我对 GitBash 的尝试以及我的代码之后。
当我这样做时">>> $comments = AppBonIntervention::find(2003);"
Tinker向我展示了正确的东西,与我的模型相关的表格的id"2003",以及他的所有组件。但是当我在之后这样做时:
"$comment = $comments->bonInterventionFournitures"
I'have this answer "IlluminateDatabaseEloquentCollection {#810
all: [],
}"
对于很多不同名称/方法的尝试,他总是相同的,就像我的桌子是空的,但它们不是......
这里有我的"任务"模型,当我阅读文档 Laravel雄辩的HastoMany时,似乎您可以传递给返回,对于第一个参数是命名空间,对于第二个参数是表的外键,对于第三个参数是主键。所以我这样做了,我希望我没有弄错自己。
namespace App;
use IlluminateDatabaseEloquentModel;
class BonIntervention extends Model
{
protected $primaryKey = 'Id_TTa';
protected $table = 'T_Taches';
public $timestamps = false;
public function bonInterventionFournitures(){
return $this->hasMany('AppBonInterventionFournitures', 'Id_TTa', 'Id_TTaDFo');
}
}
现在它是家具的模型。(返回中的参数方法相同)
namespace App;
use IlluminateDatabaseEloquentModel;
class BonInterventionFournitures extends Model
{
protected $table = 'T_Taches_Details_Fournitures';
protected $primaryKey = 'Id_TTaDFo';
public function bonInterventions(){
return $this->belongsTo('AppBonIntervention', 'Id_TTa', 'Id_TTa');
}
}
我可以向您展示此表的迁移。 首先,表任务(我不向你显示整个表,因为它有很多信息。
public function up()
{
Schema::create('T_Taches', function(Blueprint $table)
{
$table->integer('Id_TTa', true);
$table->string('Responsable_TCa')->nullable()->index('Responsable_TCa');
$table->dateTime('Date_TTa')->nullable()->default('0000-00-00 00:00:00');
$table->string('Ste_TCl')->nullable()->index('Ste_TCl');
$table->string('Ste_Utl')->nullable()->index('Ste_Utl');
$table->string('Adr_Liv_TCl')->nullable()->index('Adr_Liv_TCl');
$table->string('Contact_TCo')->nullable()->index('Contact_TCo');
$table->string('Collaborateur_TCa')->nullable()->index('Collaborateur_TCa');
$table->string('NDevis_TDv')->nullable()->index('NDevis_TDv');
$table->string('Devis_Type_TTa')->nullable();
$table->string('NCommande_TDv')->nullable()->index('NCommande_TDv');
$table->dateTime('Date_Debut_TTa')->nullable();
$table->dateTime('Date_Fin_TTa')->nullable();
$table->dateTime('Date_Demande_TTa')->nullable();
现在的家具桌
public function up()
{
Schema::create('T_Taches_Details_Fournitures', function(Blueprint $table)
{
$table->integer('Id_TTaDFo', true);
$table->integer('Id_TTa')->nullable()->index('Id_TTa');
$table->string('Class_TTaDFo')->nullable();
$table->string('Des_TTaDFo')->nullable();
$table->string('Ref_TTaDFo')->nullable();
$table->float('Qte_TTaDFo', 10, 0)->nullable()->default(0);
$table->float('PAHT_TTaDFo', 10, 0)->nullable()->default(0);
$table->float('Tx_Mge_TTaDFo', 10, 0)->nullable()->default(1.5);
$table->float('Vente_HT_TTaDFo', 10, 0)->nullable()->default(0);
});
}
我希望你理解我的问题,并感谢大家的观看。
解决
我解决了这个问题,并在我的帖子之后解释了为什么。
我已经找到了解决方案。事实上,在我的模型中,我擦除了第二个和第三个参数。
return $this->belongsTo('AppBonIntervention', 'Id_TTa', 'Id_TTa');
return $this->hasMany('AppBonInterventionFournitures', 'Id_TTa', 'Id_TTaDFo');
我只是在我的返回中添加第二个参数有很多,就像这样
return $this->hasMany('AppBonInterventionFournitures', 'Id_TTa');
return $this->belongsTo('AppBonIntervention');
现在当我这样做时,工匠修补
$comments = AppBonIntervention::find(2003);
$comment = $comments->bonInterventionFournitures;
我找到了正确的答案。