【问题标题】:problem in display two fields of join with same name in Laravel blade在 Laravel 刀片中显示两个同名连接字段的问题
【发布时间】:2021-08-30 22:12:06
【问题描述】:

MySql 数据库中有两个表:

person('id', 'name', 'address')
car('id', 'person_id', 'name')

我用这个查询加入他们:

$data = DB::table('person')->join('car', 'person.id', '=', 'car.person_id')->get(); return view('view1',['data'=>$data]);

在 view1 中我们有:

person name: {{$data->name}}
car name: {{$data->name}}

问题是如何在 view1 中显示这两个字段? 请注意,在我的情况下,我无法将字段名称更改为两个不同的名称。

【问题讨论】:

  • $data = DB::table('person')->select('car.name as carName','person.name as personName') ->join('car', 'person .id', '=', 'car.person_id')->get();
  • 我建议你为每个表创建模型。它可以节省大量时间和代码干净
  • 你应该阅读有关 laravel 关系的内容。一个人有很多车有很多,车属于人。然后阅读与。模型::with('relationship_name')

标签: php mysql laravel laravel-blade laravel-8


【解决方案1】:

我建议你使用php artisan 命令为每个表创建模型

php artisan make:model Person

人物模型如下所示

 <?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Person extends Model
{
    use HasFactory;

    protected $table = "person";

    public function cars()
    {

        return $this->hasMany(Car::class);
    }
}

类似地创建汽车模型

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Car extends Model
{
    use HasFactory;

    protected $table="car";


   
}

要获取你可以这样做

$person=Person::with('cars')->get();

所以你不需要别名

$data = DB::table('person')->select('car.name as carName','person.name as personName') ->join('car', 'person.id', '=', 'car.person_id')->get(); 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-08
    • 2020-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-21
    • 2014-11-18
    相关资源
    最近更新 更多