я следующие таблицы, созданные с помощью Schema
S:Работа с красноречивым отношений в Laravel 5.3
Schema::create('typen', function (Blueprint $table) {
$table->increments('id');
$table->string('name')->unique();
});
Schema::create('auktionen', function (Blueprint $table) {
$table->increments('id');
$table->integer('typ')->unsigned();
$table->foreign('typ')->references('id')->on('typen');
});
таблице typen
создается только один раз содержит фиксированные значения:
Typen
id| name
1 | Typ 1
2 | Typ 2
...
Эти значения являются постоянными , в течение срока действия приложения больше не будет добавлено. So every Auktion
I create должно быть связано с Typ
. Я создал модель для Auktion
и думал об этом как отношения «один-к-одному» (это правильно?).
Я хотел бы создать Auktion с заданной Typ с помощью красноречивых запросов, как это:
$thetyp = App\Typ::where("id", "=", 1)->first();
$auktion->typ()->associate($thetyp);
и принести name
из Typ
моих Auktion
:
$auktion->typ->name;
В настоящее время моя модель выглядит например, для Auktion
:
public function typ()
{
return $this->hasOne('App\Typ', 'typ');
}
который не работает. Я уже пробовал устанавливать разные отношения, но я просто заканчиваю разные коды ошибок, начиная от неопределенных методов (associate()
до ошибки, когда заявление SQL не пыталось обновить таблицу typen
(при использовании save()
- чего я действительно не хочу).
Может ли кто-нибудь прояснить эту проблему для меня и объяснить, какие отношения я должен использовать?
EDIT1: Как уже говорилось в комментарии я уже пробовал использовать belongsTo
в Auktion
модели
public function typ()
{
return $this->belongsTo('App\Typ', 'typ');
}
, что приводит к Undefined property: App\Auktion::$typ
при вызове
$thetyp = App\Typ::where("id", "=", 1)->first();
$auktion->typ()->save($thetyp);
и при вызове $auktion->typ->name;
в
Trying to get property of non-object
EDIT2:
Я просто понял, что
echo $auktion->typ()->first()->name;
действительно работает. But referring to this answer это должно быть таким же, как
echo $auktion->typ->name;
Что именно я делаю не так?
EDIT3:
Я попытался с помощью предложенного кода:
$thetyp = App\Typ::find($typ);
$auktion->typ->save($thetyp);
После того как я переходите к виду ehere я запускаю код, который я получил это:
I получил это второй раз сегодня, так же из ниоткуда
См. Мой ответ. Надеюсь, поможет! – idelara