php - Laravel 7 一对多关系?
问题描述
以下是所有模型、迁移和控制器。
捐赠模式
class Donation extends Model
{
protected $guarded =[];
public function users(){
return $this->hasMany(User::class);
}
public function items(){
return $this->belongsTo(DonationItems::class);
}
}
捐赠物品型号:
class DonationItems extends Model
{
protected $guarded=[];
public function donation(){
return $this->hasMany(Donaition::class);
}
}
捐赠物品迁移:
public function up()
{
Schema::create('donation_items', function (Blueprint $table) {
$table->id();
$table->string('category');
$table->timestamps();
});
}
捐赠迁移:
public function up()
{
Schema::create('donations', function (Blueprint $table) {
$table->id();
$table->string('item');
$table->unsignedInteger('user_id');
$table->unsignedInteger('donation_item_id');
$table->timestamps();
});
}
在我的控制器中,我想访问以下项目:
$don = Donation::all();
$don->items;
但我无法做到这一点。
解决方案
它不起作用,因为 laravel 遵循一个关系规则:
请记住,Eloquent 会自动确定 Comment 模型上正确的外键列。按照惯例,Eloquent 将采用拥有模型的“蛇形”名称并以 _id 为后缀。所以,对于这个例子,Eloquent 会假设 Comment 模型的外键是 post_id。
所以你可以通过提供本地和外国身份证来尝试
所以它看起来像这样
捐赠模型 类捐赠扩展模型 { protected $guarded =[];
public function users(){
return $this->hasMany(User::class);
}
public function items(){
return $this->belongsTo(DonationItems::class, 'donation_item_id', 'id');
}
}
捐赠物品型号:
class DonationItems extends Model
{
protected $guarded=[];
public function donation(){
return $this->hasMany(DonationItems::class, 'id', 'donation_item_id');
}
}
我是从头开始写的,您可能需要交换本地和外国身份证
推荐阅读
- php - 用文字搜索
- javascript - React Router 更改 URL,但组件未呈现
- c# - 标题:使用 Xamarin.Forms 项目 c# 连接到 LDAP 服务器时出现问题
- c# - Unity2D ScrollView UI 在 Android 构建中不显示其内容
- r - tidyverse 中的重命名功能无法按预期工作
- db2 - 清除 DB2 中的事务数据
- python - 当用户输入为空时Python引发错误
- excel - 如何在 VBA 中定义下一个循环的范围
- windows - 如何写入 BitLocker 加密卷的物理扇区?
- python - Django 路径不起作用,它会将我引导到错误的网站