我一直在模特中使用雄辩。我有以下两张表:
Singlecard
->id
->card_id
Card
->id
->card_id
我的Singlecard模型具有以下功能:
public function info()
{
return $this->hasOne('Card', 'card_id', 'card_id');
}
我用它来获取卡片(我的测试中只有一张牌在卡片中)。
$cards = Singlecard::where('deck_id', '=', $deck)->get();
foreach ($cards as $card)
{
$cards_array[] = $card;
}
它有正确的卡并使用var_dump我验证了。但是,问题出在这里:
<div class="row singlecard">
<a class="" href="{{ $single->id }}">
<div class="large-2 columns">
<img src="{{ $single->info->card_image }}">
</div>
<div class="large-10 columns">
<div class="row">
<div class="large-12 columns">
<p>{{ $single->info->name }}</p>
</div>
</div>
<div class="row">
<div class="large-12 columns">
@foreach ($single->attributes as $attribute)
<p>{{ $attribute->alias }}</p>
@endforeach
</div>
</div>
</div>
</a>
</div>
这是扭曲:属性代码工作正常。它从我定义的一对多关系中抓取了正确的属性。但它从卡表中抓取了错误的信息。即使我定义了要匹配的键,它也会根据单个ID和Cards表中的card_id进行匹配。
我尝试删除密钥,但没有做任何事情。我甚至一起删除了这个函数只是为了验证那是被调用的函数。我不确定是什么问题?
更新
我明白了,我做了两件事。一,我使用卡表中的id作为与Singlecards匹配的记录。我也改变了我在Singlecards模型中的功能:
public function info()
{
return $this->belongsTo('Card', 'card_id');
}
这使我能够正确地查询关系。
答案 0 :(得分:0)
我需要更新模型的相关性,并更好地形成关系。我还需要更改模型,以便Singlecards属于卡片。我认为它应该是相反的。
卡包含有关各种卡片的所有信息,而Singlecards是每个人手/牌中的内容。我认为这会使Singlecards成为父母,但这是一个错误。一旦我将模型中的函数更改为:
public function info()
{
return $this->belongsTo('Card', 'card_id');
}
然后它奏效了。