如何检索 Laravel 中特定课程的课程内容?
How do I retrieve course contents of the specific course in Laravel?
我正在创建一个在线课程网站。我在检索特定课程的课程内容时遇到问题。
此功能还显示了不同课程的所有内容。我想改为显示特定课程的内容。
public function index()
{
$contents = Content::all();
return view('content.index', compact('contents'));
}
这是我的内容模型。
class Content extends Model
{
protected $fillable = [
'topic', 'content',
];
public function course()
{
return $this->belongsTo('App\Course');
}
}
这是课程模型。
class Course extends Model
{
protected $fillable = [
'title', 'about', 'image',
];
public function contents(){
return $this->hasMany('App\Content');
}
}
内容迁移
public function up()
{
Schema::create('contents', function (Blueprint $table) {
$table->bigIncrements('id');
$table->integer('course_id');
$table->string('content');
$table->string('topic');
$table->timestamps();
});
}
内容索引blade
@foreach ($contents as $content)
<div class="col-lg-12 content-list">
<a href="/content/{{$content->id}}">
<div class="cl-item mb-2" style="border-radius: 8px; padding: 18px; background-color: #c2c6ca;">
<h4 class="m-0">{{$content->topic}}</h4>
</div>
</a>
</div>
@endforeach
为此,您需要做的就是使用 with 同时获取内容及其课程:
public function index()
{
$contents = Content::with('course')->get();
return view('content.index', compact('contents'));
}
更多信息,您可以访问这个link:https://laravel.com/docs/6.x/eloquent-relationships#eager-loading
您需要在 web.php
中创建一个路由,如下所示:
Route::get('/courses/{course_id}/contents', 'ContentController@get')->name('web.course_contents');
在上面的代码库中,我们传递了 "course_id" 参数,我们要为其获取内容。
在 ContentController.php 中,执行以下操作:
class ContentController extends Controller
{
get($course_id)
{
$contents = Content::where('course_id', $course_id)->get();
return view('content.index', compact('contents'));
}
}
Content::where('course_id', $course_id)->get()
将 运行 select * from contents where course_id = ?
查询到您的数据库。您可以通过执行以下操作进行检查:
class ContentController extends Controller
{
get($course_id)
{
$contents = Content::where('course_id', $course_id)->get();
logger(Content::where('course_id', $course_id)->toSql());
return view('content.index', compact('contents'));
}
}
您可以详细了解 Laravel 查询生成器 here。
编码愉快!
我正在创建一个在线课程网站。我在检索特定课程的课程内容时遇到问题。
此功能还显示了不同课程的所有内容。我想改为显示特定课程的内容。
public function index()
{
$contents = Content::all();
return view('content.index', compact('contents'));
}
这是我的内容模型。
class Content extends Model
{
protected $fillable = [
'topic', 'content',
];
public function course()
{
return $this->belongsTo('App\Course');
}
}
这是课程模型。
class Course extends Model
{
protected $fillable = [
'title', 'about', 'image',
];
public function contents(){
return $this->hasMany('App\Content');
}
}
内容迁移
public function up()
{
Schema::create('contents', function (Blueprint $table) {
$table->bigIncrements('id');
$table->integer('course_id');
$table->string('content');
$table->string('topic');
$table->timestamps();
});
}
内容索引blade
@foreach ($contents as $content)
<div class="col-lg-12 content-list">
<a href="/content/{{$content->id}}">
<div class="cl-item mb-2" style="border-radius: 8px; padding: 18px; background-color: #c2c6ca;">
<h4 class="m-0">{{$content->topic}}</h4>
</div>
</a>
</div>
@endforeach
为此,您需要做的就是使用 with 同时获取内容及其课程:
public function index()
{
$contents = Content::with('course')->get();
return view('content.index', compact('contents'));
}
更多信息,您可以访问这个link:https://laravel.com/docs/6.x/eloquent-relationships#eager-loading
您需要在 web.php
中创建一个路由,如下所示:
Route::get('/courses/{course_id}/contents', 'ContentController@get')->name('web.course_contents');
在上面的代码库中,我们传递了 "course_id" 参数,我们要为其获取内容。
在 ContentController.php 中,执行以下操作:
class ContentController extends Controller
{
get($course_id)
{
$contents = Content::where('course_id', $course_id)->get();
return view('content.index', compact('contents'));
}
}
Content::where('course_id', $course_id)->get()
将 运行 select * from contents where course_id = ?
查询到您的数据库。您可以通过执行以下操作进行检查:
class ContentController extends Controller
{
get($course_id)
{
$contents = Content::where('course_id', $course_id)->get();
logger(Content::where('course_id', $course_id)->toSql());
return view('content.index', compact('contents'));
}
}
您可以详细了解 Laravel 查询生成器 here。
编码愉快!