Laravel 4 - 如何在视图中访问 MySQL 数据库

Posted

技术标签:

【中文标题】Laravel 4 - 如何在视图中访问 MySQL 数据库【英文标题】:Laravel 4 - How to access MySQL db in Views 【发布时间】:2014-03-23 02:14:28 【问题描述】:

我对使用框架很陌生。我有一个学校项目,我需要使用 MVC,并且我已经使用 laravel 大约 2 周了。

我已经设置了站点结构、身份验证等。但我有点遇到问题

我不知道 laravel,如何使用视图访问除用户之外的 mysql 表。我阅读了一些教程和文档 - 没有运气

例如用户详细信息 - 我只使用这些:

 Auth::user()->username 
 Auth::user()->email 

但是我创建了一个新模型和控制器。我知道如何在 db 表中创建一个条目,但不知道如何访问它。以下是以下文件:

模型:课程

<?php

class Course extends Eloquent 

    /* User Rules */

    public static $rules = array(

    'name'=>'required|alpha|size:4',

    'cid'=>'required|digits:3|unique:courses',

    'description'=>'required|regex:/^[A-Za-z \t]*$/i|min:3|unique:courses',

    'credits'=>'required|numeric'

    );

    /**
     * The database table used by the model.
     *
     * @var string
     */
    protected $table = 'courses';



控制器:课程控制器

<?php

class CourseController extends BaseController 


//------------------------------------------

public function addCourseView() 
    return View::make('courses.addcourse');


public function addCourse() 

    $validator = Validator::make(Input::all(), Course::$rules);

    if ($validator->passes()) 

            $course = new Course;
            $course->name = Input::get('name');
            $course->cid = Input::get('cid');
            $course->description = Input::get('description');
            $course->credits = Input::get('credits');
            $course->save();

            return Redirect::to('courses/add')->with('status', 'Course Added Successfully !');
     
    else 
    
        return Redirect::to('courses/add')->with('error', 'Errors have occured with your inputs')->withErrors($validator)->withInput();
    







?>

现在假设我有一个观点。

如何使用课程名称 cid 在表格中显示课程?

【问题讨论】:

我不知道 laravel,但 MVC 的整个想法是让数据库访问不被查看。要显示数据,您需要获取模型中的数据,在控制器中对其进行处理并将其传递给视图。 【参考方案1】:

您不应该在视图中访问或执行db 操作,而是应该准备来自控制器的数据并将从数据库中获取的数据传递给您的视图,例如,您可以尝试这样的操作:

// Get all courses
$courses = Course::all();

// Pass data/courses to app/views/courses/index.blade.php
return View::make('courses.index')->with('courses', $courses);

在视图循环中的课程:

@foreach($courses as $course)
     $course->fieldName 
@endforeach

这是一个简化的示例,您没有提供更多信息,因此无法更具体,只是给了您一个想法。

【讨论】:

以上是关于Laravel 4 - 如何在视图中访问 MySQL 数据库的主要内容,如果未能解决你的问题,请参考以下文章

如何在刀片视图 laravel 5.6 中访问定义的关系

如何laravel视图里访问其他控制器的路由

如何在 Laravel 4 中跟踪用户下载?

如何在 Laravel 4 中的 @if 语句(刀片)中获取当前 URL?

如何将视图中的数组传递给 ajax 并在 Laravel 5 的控制器中访问?

Laravel 4:如何在 where 子句中使用访问器