Laravel 5.5命名路由参数为mailables

时间:2018-01-16 23:00:15

标签: php laravel laravel-5 routes laravel-5.5

根据文档,一切都应该工作正常...但是..它没有。我做错了什么或者它实际上是一个错误?

相关型号:邀请

class Invitation extends Model
{
    protected $primaryKey = 'invite_code';

    protected $fillable = ['invite_code', 'creator_id', 'expires_at'];
    protected $dates = ['created_at', 'updated_at', 'expires_at'];

    public function getRouteKey()
    {
        return $this->attributes['invite_code'];
    }

    public function user()
    {
        return $this->belongsTo(User::class);
    }

    public function creator()
    {
        return $this->belongsTo(User::class, 'creator_id');
    }
}

在路线(web.php)中我有:

Route::get('/register/{invitation}', 'Auth\RegisterController@showInvitation')->name('invitation.show');

在视图和邮件中使用相同的功能:

{{ route('invitation.show', ['invitation' => $invitation]) }}

在常规Web视图中,路由生成正确:

http://host.local/register/PCBIIHW12e6GBSaK

在电子邮件中,路线显示:

http://host.local/register/0

此路线中的这个小片段:

Route::get('/test/{id}', function($id) {
    $i = \App\Invitation::find($id);
    dump( $i->invite_code );
});

转储(加载了正确的模型)... dum-dum-dum - 0;

迁移(以防万一)

Schema::create('invitations', function (Blueprint $table) {
    $table->string('invite_code')->primary();
    $table->integer('creator_id');
    $table->integer('user_id');
    $table->timestamps();
    $table->dateTime('expires_at');
});

任何人都可以解释发生了什么事吗?

1 个答案:

答案 0 :(得分:0)

它很有意思,因为它似乎正在发挥作用。我已经通过将字段重命名为dataframe <- data.frame(ID = 1:2, Name = 'XX', string_column = c('Hi \r\nyou\r\n', 'Always \r\nshare\r\n some \r\nsample\r\n data!')) dataframe$string_column #> [1] Hi \r\nyou\r\n #> [2] Always \r\nshare\r\n some \r\nsample\r\n data! #> Levels: Always \r\nshare\r\n some \r\nsample\r\n data! Hi \r\nyou\r\n dataframe$string_column <- sapply(dataframe$string_column, function(x) { gsub("[\r\n]", "", x) }) dataframe$string_column #> [1] "Hi you" "Always share some sample data!" 而不是token来更改架构......并且......它们都按预期工作......很奇怪。

解决方案 - 不要使用双字作为RouteNameKeys ...