小编spl*_*lig的帖子

Laravel.morphToMany采用级联模式

我正在寻找一种方法来做到以下几点:

假设我们有一个剧院应用程序,我们有三个模型:一方面是Event,SessionSeat,另一方面是Rate.

我们有一个morphToMany关系,因此Rate可以与其他三个模型相关联.

现在,我们希望在每个模型中都有一个rate()关系,它实现了级联模式.如果我们要求Seat实例上的rates(),它将返回其费率,否则,它将检查会话是否有费率并将返回它们.如果没有,它将返回与事件相关的费率.

因此,我们希望定义为层次结构或级联模式来检索速率.

编辑

更多信息:此外,棘手的部分是,例如,一个事件可能有两个费率:一般和青年50美元和30美元.但是一个特定的会话可能会有40美元一般.所以对于这个给定的Session,rates()方法应该返回两个速率:General为40 $,Youth为30 $,因为它没有在Session实例中"覆盖".

如果Session->rates()null很容易恢复$this->event->rates(),但不是那么容易的,当我想将此"瀑布"前解释

编辑2

在我第一次接近后,我看到一些奇怪的行为.为了简单起见:我上课了

<?php

namespace App;

use Backpack\CRUD\CrudTrait;
use Backpack\CRUD\ModelTraits\SpatieTranslatable\HasTranslations;
use Illuminate\Database\Eloquent\Model;

class Event extends Model
{

    public function rates()
    {               
        return $this->morphToMany('App\Rate', 'assignated_rate', 'assignated_rates', 'assignated_rate_id', 'rate_id')
                ->withPivot(['price', 'max_on_sale', 'max_per_inscription_set']);
    }

}
Run Code Online (Sandbox Code Playgroud)

<?php

namespace App;

use Backpack\CRUD\CrudTrait;
use Backpack\CRUD\ModelTraits\SpatieTranslatable\HasTranslations;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\HasMany;

class Session extends Model
{

    public function event()
    {
        return $this->belongsTo('App\Event');
    } …
Run Code Online (Sandbox Code Playgroud)

php laravel eloquent

9
推荐指数
1
解决办法
388
查看次数

标签 统计

eloquent ×1

laravel ×1

php ×1