Laravel 模型使用軟刪除-左連接查詢-表起別名示例
事情是這樣的,有天寫了一個左連接查詢,由于表名太長,所以分別給起個別名,代碼如下:
public function detail() { $result = TakeOrderModel::query() ->from('take_order as order') ->leftJoin('take_order_detail as detail', 'order.id', '=', 'detail.take_order_id') ->get(); dd($result); }
執(zhí)行后,報錯 Column not found: 1054 Unknown column take_order.delete_time。
查看解決辦法的,直接看底部
SQL:
select * from take_order as order left join take_order_detail as detail on order.take_order_id = detail.take_order_id where take_order.delete_time is null
顯而易見:軟刪除查詢條件的表名是全名,所以報錯了。
分析
軟刪除作用域 SoftDeletingScope 源碼:
/** * Apply the scope to a given Eloquent query builder. * * @param \Illuminate\Database\Eloquent\Builder $builder * @param \Illuminate\Database\Eloquent\Model $model * @return void */ public function apply(Builder $builder, Model $model) { $builder->whereNull($model->getQualifiedDeletedAtColumn()); }
查看 getQualifiedDeletedAtColumn 源碼:
/** * Get the fully qualified "deleted at" column. * * @return string */ public function getQualifiedDeletedAtColumn() { return $this->qualifyColumn($this->getDeletedAtColumn()); }
查看 qualifyColumn 源碼:
/** * Qualify the given column name by the model's table. * * @param string $column * @return string */ public function qualifyColumn($column) { return $this->model->qualifyColumn($column); }
查看 qualifyColumn 源碼:
/** * Qualify the given column name by the model's table. * * @param string $column * @return string */ public function qualifyColumn($column) { if (Str::contains($column, '.')) { return $column; } return $this->getTable().'.'.$column; }
以上可知: $this->getTable().'.'.$column 即為軟刪除條件的字段名。
解決辦法
代碼改成下面這樣,加一行 setTable 設置表名,就可以了。
$result = (new TakeOrderModel()) ->setTable('order') ->from('take_order as order') ->leftJoin('take_order_detail as detail', 'order.take_order_id', '=', 'detail.take_order_id') ->get();
因為寫代碼時要指定具體的查詢 columns ,有時表名真的太長,看著很不舒服,所以有此嘗試。嗯,9 點了,下班。
以上這篇Laravel 模型使用軟刪除-左連接查詢-表起別名示例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
smarty模板引擎從php中獲取數(shù)據(jù)的方法
這篇文章主要介紹了smarty模板引擎從php中獲取數(shù)據(jù)的方法,涉及smarty變量與php代碼的混編技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-01-01php寫app接口并返回json數(shù)據(jù)的實例(分享)
下面小編就為大家?guī)硪黄猵hp寫app接口并返回json數(shù)據(jù)的實例(分享)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-05-05ThinkPHP字符串函數(shù)及常用函數(shù)匯總
這篇文章主要介紹了ThinkPHP字符串函數(shù)及常用函數(shù)匯總,可供開發(fā)人員參考使用,需要的朋友可以參考下2014-07-07windows 2008r2+php5.6.28環(huán)境搭建詳細過程
這篇文章主要介紹了windows 2008r2+php5.6.28環(huán)境搭建詳細過程,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-06-06php中單個數(shù)據(jù)庫字段多列顯示(單字段分頁、橫向輸出)
這篇文章主要介紹了php中單個數(shù)據(jù)庫字段多列顯示、分行分列顯示技巧,也可稱為單字段分頁、橫向輸出,需要的朋友可以參考下2014-07-07PHP實現(xiàn)把MySQL數(shù)據(jù)庫導出為.sql文件實例(仿PHPMyadmin導出功能)
這篇文章主要介紹了PHP實現(xiàn)把MySQL數(shù)據(jù)庫導出為.sql文件實例(仿PHPMyadmin導出功能),需要的朋友可以參考下2014-05-05