php - 从 Laravel 5.1 中的通用数据库查询获取 Eloquent 模型的实例

标签 php laravel laravel-5 eloquent laravel-5.1

我的模型设置了不同的关系。假设我的 Entry 模型属于一个 Supplier,所以通常我的模型文件中有一个 supplier() 方法。

到目前为止一切顺利,当我有像 Entry::find(1)->supplier 这样的东西时,它工作得很好。但是,当我从 Laravel 中的通用 DB::查询中获取条目时,不起作用的是,我显然无法访问 supplier() 方法,因为它不是 Entry 的实例>.

$entries = DB::table('suppliers')
            ->join('entries', "supplier.id", '=', "entries.supplier_id")
            ->select('entries.*')
            ->where("supplier.name", 'like', "%{$name}%")
            ->get();

现在如果我dd($entries);

我得到了预期的结果。但是当我做类似的事情时:

dd($entries[0]->supplier); // or ->supplier()

我收到这个错误:

Undefined property: stdClass::$supplier.

那么我如何将这些结果转换(?)到 Entry Eloquent 模型以便我可以利用这些关系?


这是 $entriesprintr:

Array
(
    [0] => stdClass Object
        (
            [id] => 1
            [user_id] => 0
            [archived] => 0
            [supplier_id] => 5
            [customer_id] => 1
            [contact] => dfgfdg
            [commission] => dfgdfg
            [entrance_date] => 2015-09-22 16:52:33
            [cost_estimate] => 1
            [status] => 1
            [type] => 1
            [watch_id] => 7
            [reference] => dfgdfg
            [serial_number] => 0
            [delivery_date] => 2015-09-07 16:52:33
            [articles_json] => 
            [total_sales_cost_netto] => 
            [gross_profit_netto] => 
            [gross_profit_brutto] => 
            [created_at] => 2015-09-09 20:10:02
            [updated_at] => 2015-09-11 16:52:33
        )

)

最佳答案

如@Zakaria 所述,只需使用 Eloquent:

$entries = Entry::with('supplier')
        ->join('supplier', "supplier.id", '=', "entries.supplier_id")
        ->where("supplier.name", 'like', "%{$name}%")
        ->get();

如果你真的需要“转换”它们,试试这样的事情:

$entries = $yourDbQuery;
$c = new \Illuminate\Database\Eloquent\Collection;
foreach ($entries as $entry) {
    $entryModel = new \App\Entry;
    $c->add($entryModel->forceFill((array)$entry));
}
$c->load('supplier');

关于php - 从 Laravel 5.1 中的通用数据库查询获取 Eloquent 模型的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32538419/

相关文章:

php - 无法创建迁移 phinx

laravel - 采条件条件

Laravel 4 多语言网站

php - 如何从 laravel 中的表中选择所有列名?

php - 如何使用 .htaccess 在 Laravel 4 中选择环境?

php - 移动 HTML5 应用程序的 session 管理

laravel - Selenium 和 Laravel 5.2

laravel - 如何编写 JSON laravel 的验证规则?

laravel - 设置 Laravel Flash 消息的时间间隔

php - 从数据库检索数据到下拉列表