larvael 8 联表查询
一、数据库
老师表 id 主键 t_name 老师名字 s_id 学生id
学生表 s_id 学生id s_name学生名字
左连接
查询:我们要查询到每一个老师的学生名字 , mysql语句:
select a.id,a.t_name,b.s_name from teacher as a LEFT JOIN student as b ON a.s_id=b.id
二、用laravel8模型的链式操作调用
1.创建模型
我们用artisan脚手架
php artisan make:model User/Teacher
php artisan make:model User/Student
<?php
namespace App\Models\User;
use Illuminate\Database\Eloquent\Model;
class Student extends Model
{
protected $table='student';//表名
public $timestamps=false;//不使用laravel自动管理的数据列
}
添加 index 方法
<?php
namespace App\Models\User;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Teacher extends Model
{
protected $table='teacher as a';//定义表名 as a 表示:表的别名是a
public $timestamps=false;//不使用laravel自动管理的数据列
// select a.id,a.t_name,b.s_name from teacher as a LEFT JOIN student as b ON a.s_id=b.id
public function index(){
return $this->select('a.id','a.t_name','b.s_name')
->leftjoin('student as b','a.s_id','=','b.id')
->get();
}
}
2.创建控制器
php artisan make:controller UserController
添加 index 方法
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User\Teacher;
class UserController extends Controller
{
public function index(){
$model =new Teacher();
$list = $model -> index();
return $list;
}
}
3.定义路由
use App\Http\Controllers\UserController;
Route::get('lianbiao',[UserController::class, 'index']);
浏览器输入:http://www.la.com/lianbiao
但是有中文乱码
解决中文乱码问题
我们简单修改一下
public function index(){
$model =new Teacher();
$list = $model -> index();
$json =JSON_encode($list , JSON_UNESCAPED_UNICODE);//
return $json;
}