laravel:多表查询之一对多(10.27.0)

一,相关文档:

https://learnku.com/docs/laravel/10.x/eloquent-relationships/14889

二,php代码:

1,model中定义方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<?php
 
namespace App\Models;
 
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
 
class SUser extends Model
{
    use HasFactory;
 
    //定义关联的数据表
    protected $table = 'user';
 
    //定义主键
    protected $primaryKey = 'user_id';
 
    // 时间字段是否自动管理(created_at 和 updated_at字段)
    public $timestamps = false;
 
    //读取一条数据
    public function getOneById($userId) {
        //$all = $this->get();
        return $this->where('user_id', $userId)->first();
    }
 
    //添加数据
    public function add($row)
    {
 
        $int = $this->insert($row);
        return $int;
    }
 
    //得到用户所转的新闻列表
    public function news() {
         
         //hasMany第一个参数:关联表的model类
         //第二个参数:关联表的关系字段(news表)
         //第三个参数: 本表的关系字段(user表)
         return $this->hasMany(News::class,'user_id','user_id');
    }

2,controller 中调用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class NewsController extends Controller
{
    public function user(Request $request) {
        //默认连接,启用sql log
        DB::enableQueryLog();
        $model = new SUser();
        $obj = $model->getOneById(1);
        $data = $obj->news;
        $logNews = DB::getQueryLog();
        //返回
        return ['data'=>$data,
            'log'=>$logNews,
            ];
    }

说明:刘宏缔的架构森林—专注it技术的博客,
网站:https://blog.imgtouch.com
原文: https://blog.imgtouch.com/index.php/2023/10/24/laravel-duo-biao-cha-xun-zhi-yi-dui-duo-10-27/
代码: https://github.com/liuhongdi/ 或 https://gitee.com/liuhongdi
说明:作者:刘宏缔 邮箱: 371125307@qq.com

三,测试效果:

四,查看laravel框架的版本:

liuhongdi@lhdpc:/data/laravel/dignews$ php artisan --version
Laravel Framework 10.27.0
posted @ 2023-10-25 07:50  刘宏缔的架构森林  阅读(189)  评论(0编辑  收藏  举报