レコードが「授業時間表」に保存された後にメールを送信したいと思います。しかし、私は非常に奇妙な行動を取っている。 私のテストページでは、エラー(非オブジェクトのプロパティを取得しようとしています)が 'Packages'テーブルにあるアイテムの数に基づいているように見えることがわかりました。 2つのパッケージがある場合、MessageSentイベントは電子メールを一度送信します。その後、エラーが発生します。 (時にはエラーが 'GetFullName(lessonhours_id)'への呼び出しが呼び出されます。)4つのパッケージがある場合、私は3つの電子メールなどを送信することができます。 挿入されたログファイルを除いて、 MessageSentイベントも同様に発生します。いくつかのレコードが作成された後、何らかの形で関連するプロパティが見えなくなっているように見えるので、何らかの関係の不具合があるようです。私はパッケージとレッスンと1対1の関係を持っています。私は 'Tinker'を使うと、関係の仕事を見ることができます。どんな洞察にも感謝します。Laravelとの関係の競合5
ティンカーコード:
$ php artisan tinker
Psy Shell v0.7.2 (PHP 5.5.9-1ubuntu4.19 — cli) by Justin Hileman
>>> $les = App\Lessonhours::first();
=> App\Lessonhours {#662
id: 1,
created_at: "2016-11-03 13:16:42",
updated_at: "2016-11-03 13:16:42",
players_id: 1,
packages_id: 1,
signup_date: "2016-09-06",
}
>>> $les = App\Lessonhours::first();
=> App\Lessonhours {#664
id: 1,
created_at: "2016-11-03 13:16:42",
updated_at: "2016-11-03 13:16:42",
players_id: 1,
packages_id: 1,
signup_date: "2016-09-06",
}
>>> $les->players->getFullName($les->players_id)
=> "Girltest Testfam"
>>> $les->packages->name
=> "04 Pack Pvt"
>>>
Lessonhoursモデル:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Lessonhours extends Model
{
protected $fillable = array('signup_date', 'players_id', 'packages_id');
public $table = "lessonhours";
public function players()
{
return $this->belongsTo('App\Players', 'id');
}
public function packages()
{
return $this->belongsTo('App\Packages', 'id');
}
public function hoursused()
{
return $this->hasMany('App\Hoursused', 'lessonhours_id');
}
protected $dates = ['signup_date'];
}
パッケージモデル:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Packages extends Model
{
public $table = "packages";
protected $fillable = ['name', 'cost', 'numberofhours', 'type'];
public function lessonhours()
{
return $this->hasMany('App\Lessonhours', 'packages_id');
}
}
イベントMessageSent:
use App\Events\Event;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
use App\Lessonhours;
class MessageSent extends Event
{
use SerializesModels;
/**
* Create a new event instance.
*
* @return void
*/
public function __construct(Lessonhours $lessonhours)
{
$this->lessonhours = $lessonhours;
$this->player = $lessonhours->players->getFullName($lessonhours- >players_id);
$this->email = $lessonhours->players->family->email;
$this->package = $lessonhours->packages->name;
}
リスナー:
public function handle(MessageSent $event)
{
$lessonhours = $event->lessonhours;
$player = $event->player;
$email = $event->email;
$package = $event->package;
Mail::send('admin.email.lessonhoursnotification', ['name' => $lessonhours], function($message) use ($player, $email, $package){
$message->from('[email protected]', 'Lesson Mgmt');
$message->to($email, $player);
$message->subject('Lesson Package Update');
});
}
First Insert with Two Packages
Error thrown on the new record
私はデータベースをリセットするたびに、レコードの最初のカップルは、私は播種どのように多くのパッケージに応じて動作しますので、それは本当に私を投げたと思います。助けてくれてありがとう。電子メールは今送信しています。 – wdarnellg