【问题标题】:Laravel ORM problemsLaravel ORM 问题
【发布时间】:2013-11-08 11:22:12
【问题描述】:

我不知道如何关联这两个表。

我是 Laravel 和 ORM 的新手,所以这对我来说有点难。 这是我要关联的 2 个表:

表被称为:posts 和 post_categories 以下是一些代码:

class Post extends Eloquent {

public function categories()
{
    return $this->hasOne('PostCategorie');
    }
}

class PostCategorie extends Eloquent {
  protected $table = 'post_categories';

public function post()
{
    return $this->belongsTo('Post', 'pc_id');
    }
}


public function postCreate()
{
    $validator = Validator::make(Input::all(), Post::$rules);

    if ($validator->fails()) 
    {
        return Redirect::action('PostsController@getCreate')->withInput()->withErrors($validator);
    }
    // Else add to DB
    $categories = Input::get('categories');

    $post = new Post;
    $post->user_id = Auth::user()->id;
    $post->title   = Input::get('title');
    $post->text    = Input::get('text');
    $post->categories()->id_1 = $categories[0];
    $post->save();

}

如你所见。我将值传递给帖子,保存后就可以了...但我无法将类别 ID 添加到另一个表...

我还创建了虚拟条目,并尝试获取帖子类别值:

Route::get('/', function()
{
    $post = Post::find(5);
    echo $post->title;
    echo $post->categories()->id_1;
});

但是失败了:

Undefined property: Illuminate\Database\Eloquent\Relations\HasOne::$id_1

【问题讨论】:

    标签: php mysql orm laravel


    【解决方案1】:

    首先确定,您不必使用 PostCatagorie 作为您的模型名称。 Laravel 有一个非常好的复数类,可以非常愉快地处理 Category 或 PostCategorie。此外,如果您只调用pc_id category_id(假设表名称为类别),则无需定义任何外键,这将使生活变得更简单,直到您掌握了基础知识。

    当您创建任何类型的对象(例如 $post)时,您可以使用 dd($post); 检查其关系是否附加,您可以通过以下方式进一步深入了解这些关系:

    echo '<pre>';
    print_r($post);
    echo '</pre>;
    

    这将允许您查看您正在尝试做的事情是否真正有效并查看结果对象的结构。

    我不完全确定您所说的“我无法将类别 ID 添加到另一个表”是什么意思,而且您似乎可以保存数据......所以我会跳过那一点。如果您需要更多信息,请澄清问题。

    一旦您建立了关系并在其中获取了一些数据,您就必须像这样将两个模型一起加载以获取具有附加关系的对象:

    $post = Post::with('Category')->find(5);
    

    然后,您将能够以 $post-&gt;Category 的身份访问您的类别对象,并从那里访问其任何属性,例如$post-&gt;Category-&gt;id

    【讨论】:

    • 我什么都不懂 =/ .... 那我为什么要这样做 $post = Post::with('Category')->find(5);如果我已经有关系......那是什么“类别”???如果我有 PostCategory
    猜你喜欢
    • 2013-07-21
    • 1970-01-01
    • 2013-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-13
    • 2011-03-24
    相关资源
    最近更新 更多