2017-03-11 9 views
1

私は投稿テーブルとカテゴリテーブルの2つのテーブルを持っています。外部キーなしの一対一の関係

各投稿には1つのカテゴリしかありません。私は、外部キーなしで1つのカテゴリIDと各ポストを接続

をやろうとしています何

。私はすべてに複製したくないので、私はこの

をやろうとしていますなぜ

私は、カテゴリIDを複製するカテゴリの単語を投稿してください。

PostsController.phpコード

$posts = Post::orderBy('id', 'DESC') -> limit(16) -> get(); 

@foreach($posts as $post) 

dd($post -> categories() -> cat); 

@endforeach 

Posts.phpモデルコード

class Post extends Model 
{ 
    public function category() { 
     return $this->hasOne('App\Category'); 
    } 
} 

通報

カテゴリテーブルに外部キーがないうちに、私に外部キーを要求するエラーが表示されます。

+0

あなたの質問/問題は何ですか? – Hammerbot

+0

@El_Matella編集 – user7431257

+0

私はこれが不可能だと思う、あなたは外来キーなしで関係を持つことはできません...外来キーがない場合、関係はありません...誰かが私が間違っている場合私を修正します – lewis4u

答えて

0

関係はbelongsTo()次のようになります。

public function category() { 
    return $this->belongsTo('App\Category'); 
} 

そしてposts表は、しかし、あなたがforeign key constraintせずに使用することができ、それを動作させるために、とにかくcategory_idを持っている必要があります。

+0

こんにちはAlexey私は他のすべてのLaravelのエキスパートの大部分をあなたのことを尊敬していますので、2つのモデルを持っているかどうかという簡単な質問です。外来キーなしでそれらの間に関係を持つことはできないと思います...私はこれが基本的な原則ですの関係データベース。外部キーはありません==関係はありませんか?同意しますか? – lewis4u

+0

@ lewis4uはい、私はあなたの答えで言ったように、とにかく 'category_id'のようなキーを使う必要があると思います。しかし、[外部キー制約](https://laravel.com/docs/5.4/migrations#foreign-key-constraints)を定義することなく、関係を使用することができます。 –

関連する問題