釋
我認爲你的問題在於你如何條款join
工作。
如果classes.id
爲(int)
型和exam_list.examClasses
是(array)
型或(json)
的,那麼它是不可能的,你會得到擺在首位成功加盟。您可以通過刪除where子句並查看是否得到任何結果來測試這一點。
解決方案
我建議改變你的classes
模型和exam_list
模型之間的雄辯關係是A許多與數據透視表或一個簡單的一對多關係一對多的關係。
您需要自己決定哪些對您的項目最有意義!我強烈建議閱讀關於雄辯關係的文檔,以更好地理解在這種情況下他們將如何幫助您。
https://laravel.com/docs/5.4/eloquent-relationships
例
下面是一個多對多的關係的一個例子,你可以使用:
型號/ Classes.php
/**
* A class belongs to many exam lists
*
* @return \Illuminate\Database\Eloquent\Relations\BelongsToMany
*/
public function examLists()
{
return $this->belongsToMany(Exam_list::class, 'classes_exam_lists');
}
型號/ Exam_list.php
/**
* A exam list has many classes
*
* @return \Illuminate\Database\Eloquent\Relations\BelongsToMany
*/
public function classes()
{
return $this->belongsToMany(Classes::class, 'classes_exam_lists');
}
遷移
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('classes_exam_lists', function (Blueprint $table) {
$table->integer('class_id')->unsigned()->index();
$table->foreign('class_id')->references('id')->on('classes')->onDelete('cascade');
$table->integer('exam_list_id')->unsigned()->index();
$table->foreign('exam_list_id')->references('id')->on('exam_lists')->onDelete('cascade');
$table->primary(['class_id', 'exam_list_id']);
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::drop('classes_exam_lists');
}
隨着這些變化(並提供你有你的模型之間的關係強勁),那麼你可以用雄辯來獲取信息你需要做這樣的事情:
$exam_list = Exam_list::where('examAcYear',$this->panelInit->selectAcYear);
$collection = $exam_list->classes()->where('classTeacher', $this->data['users']->id)->get();
你能夠p瀏覽你試圖加入的兩張表的結構?你是否也可以確認你的「課程」以及「exam_lists」的模型? – Spholt
是的,這個名字的模型已被定義。在表中,exams_list字段'examClasses'的值以數組格式存儲,例如:[「1」,「2」,「3」]和其他表中的classes.id是表'classes' 。 – Cliffs