я использую Laravel 5.3
и я пытаюсь выбрать из базы данных значения для lang-файлов,
я создал файл и назвал его global.php
и внутри файла я попытался сделать это:
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; 
теперь это работает, но я хочу выбрать строки, используя поле short_name, а не идентификатор языка
я хочу, чтобы это было что-то вроде этого:
 $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 
и измените таблицу словаря на:
Словарь
 id lable_id value language_id 
как я могу сделать эту работу, поэтому я могу вытащить имя метки вместо label_id
 $lables = Dictionary::whereHas('language', function($query) { $short_name = basename(__DIR__); $query->where('short_name', $short_name); })->pluck('value', 'label_id')->toArray(); 
          Вы можете использовать whereHas() Laravel как: 
 $lables = Dictionary::whereHas('language', function($query) { $query->where('short_name', 'en'); })->get(); 
Обновить
  Если вы хотите избавиться от своего foreach() вы можете использовать функцию pluck() Laravel как: 
 $lables = Dictionary::whereHas('language', function($query) { $query->where('short_name', 'en'); })->pluck('value', 'label')->toArray(); 
Я думаю, это может быть что-то вроде:
 $lables = Dictionary::with('language')->where('short_name', 'en')->get();