'수업 시간'테이블에 레코드를 저장 한 후 전자 메일을 보내려고합니다. 그러나 나는 매우 이상한 행동을 취하고있다. 내 테스트 페이지에서 (패키지가 아닌 테이블의 속성을 얻으려는) 오류가 'Packages'테이블에있는 항목 수에 따라 발생하는 것으로 나타났습니다. 두 개의 패키지가있는 경우 MessageSent 이벤트가 발생하여 전자 메일을 한 번 발송합니다. 그 후에 오류가 시작됩니다. (때로는 오류가 '회원 함수 getFullName (lessonhours_id)'호출이 올라와있다.) 내가 4 패키지를 가지고, 나는 3 이메일 등을 보낼 수 있습니다 ... 삽입 된 로그 파일을 제외하고 레코드가 데이터베이스에 삽입된다. MessageSent 이벤트도 발생합니다. 어떻게 든 관련 속성이 몇 개의 레코드가 만들어지면 보이지 않게되는 것처럼 보이는 일종의 관계 글리치가있는 것 같습니다. 나는 Packages and Lessonhours와 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
문제가 당신의Lessonhours
모델처럼
Error thrown on the new record
나는 데이터베이스를 재설정 할 때마다, 기록의 처음 몇 내가 시드 얼마나 많은 패키지에 따라 작동 것이기 때문에 그것은 정말 나를 던졌다 같아요. 도와 주셔서 감사합니다. 지금 이메일이 발송 중입니다. – wdarnellg