我正在使用Laravel 5.3
并且我试图从数据库中选择lang文件的值
我创建了一个文件并将其命名为global.php
并在文件中我试图这样做:
let n = CGFloat(NumberFormatter().number(from: string)!)
现在,这是有效的,但我想使用short_name字段而不是语言的id来选择行
我希望它是这样的:
use App\Dictionary;
$language_id = 1;
$dictionary = array();
$lables = Dictionary::where('language_id',$language_id)->get();
foreach($lables as $label):
$dictionary[$label->label] = $label->value;
endforeach;
return $dictionary;
我的数据库看起来像这样:
语言
$lables = Dictionary::all()->language()->where('short_name', 'en')->get();
词典
id
name // for example: English
short_name // for exmaple: en
我的模型看起来像这样:
语言模型
id
key
value
language_id
字典模型
namespace App;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class Language extends Model
{
use SoftDeletes;
protected $softDelete = true;
protected $dates = ['deleted_at'];
public function dictionary()
{
return $this->hasMany('App\Dictionary');
}
}
谢谢你的帮助!
!!!的更新 !!!
我又添加了一个名为
的表标签
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Dictionary extends Model
{
protected $table = 'dictionary';
public function language()
{
return $this->belongsTo('App\Language');
}
}
并将字典表更改为:
词典
id
label_name
我怎样才能完成这项工作,因此我可以拉出label_name而不是label_id
id
lable_id
value
language_id
答案 0 :(得分:2)
您可以将Laravel的whereHas()
功能用作:
$lables = Dictionary::whereHas('language', function($query) {
$query->where('short_name', 'en');
})->get();
<强>更新强>
如果您想摆脱foreach()
,那么您可以使用Laravel的pluck()
功能:
$lables = Dictionary::whereHas('language', function($query) {
$query->where('short_name', 'en');
})->pluck('value', 'label')->toArray();
答案 1 :(得分:1)
我猜它可能是这样的:
$lables = Dictionary::with('language')->where('short_name', 'en')->get();