在原始mysql中,什么等效于LaravelEloquent的belongsto

t1rydlwq  于 2021-06-17  发布在  Mysql
关注(0)|答案(2)|浏览(300)

可能是个愚蠢的问题。但假设我有两张table, teams 以及 images . 这个 teams 表有一个字段 image_id . 在我雄辩的模型中 Team ,我有:

public function image()
{
    return $this->belongsTo('App\Image');
}

当我想得到一个团队的形象,我调用 $team->image . 我要做的是在原始mysql中发出这个请求。到目前为止,我有:

SELECT teams.*, images.*  
FROM `teams` 
    LEFT JOIN images ON teams.image_id = images.id 
WHERE teams.id = 1

这是正确的方法吗?可以改进吗?

mrwjdhj3

mrwjdhj31#

这是正确的sql查询吗?

可以改进吗?

仅选择图像。例如:

SELECT images.url as image_url  
FROM `teams` 
    LEFT JOIN images ON teams.image_id = images.id 
WHERE teams.id = 1
hgncfbus

hgncfbus2#

如果使用以下命令:

\DB::enableQueryLog();

//do query
$team = Team::all();
$image = $team->image;

dd(\DB::getQueryLog());

输出如下:

select * from teams

select * from images where team_id = ? (? => the team id number)

laravel使用activerecord模式。你可以用谷歌搜索。所以,laravel不使用join,而是sequentials select .
您要查找的查询正是您的查询:

SELECT teams.*, images.*  
FROM `teams` 
LEFT JOIN images ON teams.image_id = images.id 
WHERE teams.id = 1

但是,在引擎盖下,这不是拉威尔的方式。

相关问题