Laravel为简单关系船创建和检索数据

时间:2016-01-29 12:28:24

标签: php laravel

在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_repositoriesreport_transactions表在report_transactions表中有很多字段,amount_repositories属于amount_repositories

report_transactionsamount_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;

1 个答案:

答案 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有关系。

希望这会有所帮助。你很接近,只需要在你的关系数据中添加更多的数据,你就在那里!