php - 我怎么能用 eloquent 为 laravel 8 写这个查询
问题描述
我在 laravel 8 上编写查询时遇到问题。
我有这个模型:
class ScrittureBilancio extends Model
{
use HasFactory;
protected $table = 'scritturebilancio';
protected $fillable = ['CodiceConto','IdLibroMastro','IdRubrica','IdIniziativa',
'Data','Importo','Segno','Descrizione','Esercizio','Competenza'];
protected $primaryKey = 'idscritturebilancio';
public function Rubrica() {
return $this->belongsTo(Rubrica::class,'IdRubrica', 'idRubrica');
}
public function Iniziativa() {
return $this->belongsTo(Iniziative::class,'IdIniziativa', 'idiniziativa');
}
}
class Iniziative extends Model
{
use HasFactory;
protected $table = 'iniziative';
protected $fillable = ['Denominazione','IdStruttura','IdAgenzia','TipoIniziativa','StatoIniziativa'];
protected $primaryKey = 'idiniziativa';
public function Agenzia() {
return $this->belongsTo(Agenzie::class,'IdAgenzia', 'idagenzia');
}
public function Struttura() {
return $this->belongsTo(StruttureIniziativa::class,'IdStruttura','idstrutturainiziativa');
}
}
class StruttureIniziativaPianoConti extends Model
{
use HasFactory;
protected $table = 'struttureiniziativepianiconti';
protected $fillable = ['CodiceBilancio','Descrizione','IdStruttura','CodiceVoceMIRWEB','IdPadre',
'Natura','Riferimento','Gestione','ControPartita','Tipo'];
protected $primaryKey = 'id';
public function Struttura() {
return $this->belongsTo(StruttureIniziativa::class,'IdStruttura', 'idstrutturainiziativa');
}
}
我必须雄辩地写下这个查询:
SELECT * FROM scritturebilancio LEFT JOIN iniziative on scritturebilancio.idiniziativa=iniziative.idiniziative LEFT JOIN struttureiniziativepianiconti ON iniziative.idstruttura=struttureiniziativepianiconti.id WHERE codiceConto IN (SELECT codicebilancio FROM struttureiniziativepianiconti) WHERE natura3 AND 'CodiceConto
有人能帮我吗?我是 php 和 laravel 的新开发人员。谢谢大家。
解决方案
使用这种格式的查询
ScrittureBilancio::select('*')
->leftjoin('iniziative','scritturebilancio.idiniziativa','=','iniziative.idiniziative')
->leftjoin('struttureiniziativepianiconti','iniziative.idstruttura','=','struttureiniziativepianiconti.id')
->whereRaw('scritturebilancio.codiceConto IN (SELECT codicebilancio FROM struttureiniziativepianiconti WHERE natura="Costi") AND scritturebilancio.idiniziativa=193')
->get();
推荐阅读
- jmeter - 我可以使用 GUI 模式运行我的 .jmx 文件,但不能使用非 gui 模式。我在终端中运行命令“jmeter -n -t Peda_First.jmx -l testresult.jtl”
- openshift - 升级后的多个指标项目
- javascript - 检查多个值是否为数字
- c#-4.0 - 在检查 ModelState.IsValid 之前我绑定了一个值,在该模型状态 ID 失败之后
- elasticsearch - 在 Elassandra 中创建映射时出错
- javascript - 如果按下按钮组,jQuery 显示/隐藏 div
- image - 无法使用 Amplify Storage API 在 React Native 中显示来自 s3 的图像
- c# - 使用 Levenshtein 距离优化来自两个大型数据集的匹配元素(将每个元素与其他元素进行比较)
- mongodb - Meteor-publish 返回比 MongoDB 所需的更多行
- python-3.x - Scikit-learn 对 MLR 的正确性?