【发布时间】:2020-08-17 18:14:57
【问题描述】:
我正在使用Laravel Framework 6.16.0,我有两个表,logos 和 companies:
标志:
Schema::create('logos', function (Blueprint $table) {
$table->bigIncrements('id');
$table->integer('companies_id')->default('999999');
$table->string('logo_path')->nullable($value = true); // path to the logo image
$table->timestamps();
});
公司:
Schema::create('companies', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('symbol'); // AAPL
$table->string('name'); // company name such as Apple Inc.
$table->timestamps();
});
型号:
class Logo extends Model
{
protected $table = 'logos';
protected $guarded = ['id'];
public function company()
{
return $this->belongsTo(Company::class, 'companies_id');
}
}
class Company extends Model
{
protected $table = 'companies';
protected $guarded = ['id'];
}
我想获取logo-table 中没有徽标且徽标尚未更新为90 days 的所有符号。
我尝试了以下方法:
$symbolsWithoutLogos = DB::table('companies')
>leftJoin('logos', 'companies.id', '=', 'logos.companies_id')
->whereDate('logos.updated_at', Carbon::now()->subDays(90))
->whereNull('companies.logo_image')
->orderBy('name', 'ASC')
->get('companies.*');
此查询结果:
select `companies`.* from `companies` left join `logos` on `companies`.`id` = `logos`.`companies_id` where date(`logos`.`updated_at`) = ? order by `name` asc
但是,即使我的公司表有足够的记录,我在运行此查询时也没有得到结果:
任何建议我做错了什么?
感谢您的回复!
【问题讨论】:
-
我认为您应该更正您提供给我们的信息。因为首先,我看到的是“logo_path”列而不是“logo_image”列,正如您在下面的构建器中所写的那样。其次,在原始 Mysql 查询中,我没有看到“logo_image”或“logo_path”。最后,您谈到获取没有徽标但最后更新徽标至少 90 天前的“符号”,这是矛盾的。