在laravel我想创建简单的关系船来检索它们之间的数据,但我不能和我得到错误
我有两个表mBooleanPublishSubject.asObservable()
.doOnNext(__ -> System.out.println("on value emitted " + System.currentTimeMillis()))
.take(1)
.doOnNext(__ -> System.out.println("on value emitted 2 " + System.currentTimeMillis()))
.delay(1, TimeUnit.SECONDS)
.doOnNext(__ -> System.out.println("on value emitted 3 " + System.currentTimeMillis()))
.subscribe(__ -> System.out.println("done " + System.currentTimeMillis()));
和amount_repositories
,report_transactions
表在report_transactions
表中有很多字段,amount_repositories
属于amount_repositories
,
report_transactions
是amount_repositories
表中的分隔数据,然后report_transactions
属于amount_repositories
。
report_transactions
上课:
ReportMerchantTransactions
class ReportMerchantTransactions extends Model
{
protected $table = 'report_transactions';
public function amount_repositories()
{
return $this->hasMany('App\AmountRepositories');
}
}
上课:
AmountRepositories
class AmountRepositories extends Model
{
protected $table = 'amount_repositories';
public function report_merchant_transactions()
{
return $this->belongsTo('App\ReportMerchantTransactions');
}
}
迁移文件:
AmountRepositories
现在我希望获取class AmountRepositories extends Migration
{
public function up()
{
Schema::create('amount_repositories', function (Blueprint $table) {
$table->increments('id');
$table->string('amount');
$table->integer('report_id')->unsigned();
$table->foreign('report_id')->references('id')->on('report_transactions');
$table->timestamps();
});
}
public function down()
{
Schema::drop('amount_repositories');
}
}
中属于AmountRepositories
的所有数据:
ReportMerchantTransactions
不幸的是我收到了这个错误:
$posts= ReportMerchantTransactions::find(1)->amount_repositories;
答案 0 :(得分:0)
您可能需要将其他参数传递到belongsTo()
或hasMany()
方法。
默认情况下,Laravel将假定链接表的外键是当前表的名称,并且_id
连接到它。错误也指向了这个方向;请注意,它说它找不到名为amount_repositories.report_merchant_transactions_id
的列,这是Laravel生成的默认外键。由于您的外键似乎不符合该惯例,这完全没问题,因此Laravel提供了额外的参数来传递给它。
这个概念是:return $this->hasMany('App\Comment', 'foreign_key', 'local_key');
拉from docs。
不是你的模型布局是积极的,但沿着这些方向的东西应该让你去。
class AmountRepositories extends Model
{
protected $table = 'amount_repositories';
/**
* Pass the FK along with method
*/
public function report_merchant_transactions()
{
return $this->belongsTo('App\ReportMerchantTransactions', 'report_id');
}
}
这表示AmountRepositories
表与使用ReportMerchantTransactions
的外键的report_id
有关系。
希望这会有所帮助。你很接近,只需要在你的关系数据中添加更多的数据,你就在那里!