laravel eloquent relation one to many returns null(laravel 雄辩的一对多关系返回 null)
问题描述
当我得到incoming_goods数据(belongsTo)时,产品数据总是返回null.
The product data always return null when i get the incoming_goods data (belongsTo).
这是我的产品型号:
<?php
namespace App;
use IlluminateDatabaseEloquentModel;
use IlluminateDatabaseEloquentSoftDeletes;
class Product extends Model
{
use SoftDeletes;
protected $guarded = [
'id', 'created_at', 'updated_at', 'deleted_at',
];
public function transaction_details()
{
return $this->hasMany('AppTransaction_detail');
}
public function incoming_goods()
{
return $this->hasMany('AppIncoming_good');
}
}
这是我的 Incoming_good 模型:
Here is my Incoming_good Model:
<?php
namespace App;
use IlluminateDatabaseEloquentModel;
class Incoming_good extends Model
{
protected $guarded = [
'id', 'created_at', 'updated_at',
];
public function product()
{
return $this->belongsTo('AppProduct');
}
}
这是我对那两个表的迁移:
And here is my migration of that two table:
产品表迁移:
<?php
use IlluminateSupportFacadesSchema;
use IlluminateDatabaseSchemaBlueprint;
use IlluminateDatabaseMigrationsMigration;
class CreateProductsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('products', function (Blueprint $table) {
$table->increments('id');
$table->string('name', 50);
$table->integer('price');
$table->integer('stock')->nullable();
$table->integer('available');
$table->string('image1', 190)->nullable();
$table->string('image2', 190)->nullable();
$table->string('image3', 190)->nullable();
$table->string('image4', 190)->nullable();
$table->string('image5', 190)->nullable();
$table->timestamps();
$table->softDeletes();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('products');
}
}
incoming_goods 迁移:
incoming_goods migration:
<?php
use IlluminateSupportFacadesSchema;
use IlluminateDatabaseSchemaBlueprint;
use IlluminateDatabaseMigrationsMigration;
class CreateTableIncomingGoods extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('incoming_goods', function (Blueprint $table) {
$table->increments('id');
$table->integer('product_id');
$table->integer('stock');
$table->text('note')->nullable();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('incoming_goods');
}
}
这是我的代码,用于显示 incomong_goods 数据和产品(关系属于):
Here is my code to show incomong_goods data and product (relation belongsTo):
$data = Incoming_good::select('id', 'stock', 'note', 'created_at')->with('product')->get();
我尝试使用 alies,但它仍然返回 null 的产品数据.希望你能帮助我:)
I've try to use alies, but still it return the product data null. Hope you can help me :)
推荐答案
为了将预先加载的 Product
与 Incoming_good
相匹配,Laravel 需要外部要选择的键.由于您没有在选择列表中包含外键 (product_id
),Laravel 在检索它们后无法匹配相关记录.因此,您所有的 product
关系都将为空.将外键添加到选择列表中,你应该就好了.
In order to match up the eager loaded Product
s with the Incoming_good
s, Laravel needs the foreign key to be selected. Since you did not include the foreign key (product_id
) in the select list, Laravel can't match up the related records after retrieving them. So, all your product
relationships will be empty. Add in the foreign key to the select list, and you should be good.
$data = Incoming_good::select('id', 'product_id', 'stock', 'note', 'created_at')
->with('product')
->get();
这篇关于laravel 雄辩的一对多关系返回 null的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:laravel 雄辩的一对多关系返回 null
基础教程推荐
- Doctrine 2 - 在多对多关系中记录更改 2022-01-01
- PHP 守护进程/worker 环境 2022-01-01
- 如何在 XAMPP 上启用 mysqli? 2021-01-01
- 在 yii2 中迁移时出现异常“找不到驱动程序" 2022-01-01
- 使用 PDO 转义列名 2021-01-01
- 找不到类“AppHttpControllersDB",我也无法使用新模型 2022-01-01
- 如何在 Symfony 和 Doctrine 中实现多对多和一对多? 2022-01-01
- 在 CakePHP 2.0 中使用 Html Helper 时未定义的变量 2021-01-01
- HTTP 与 FTP 上传 2021-01-01
- phpmyadmin 错误“#1062 - 密钥 1 的重复条目‘1’" 2022-01-01